i++;j++;
continue;
把這兩句改成壹句:
break;
因為比如a[3]>b[6],那麽接下來我們只需要從i=4開始判斷就行了,跳出當前j循環,就是從i=3進入到i=4。
而如果像原來那樣都加1,則當(j+1)+1>=n時很有可能跳到(i+1)+1=5上去。並且就算跳到i=4上,那麽j也不是從0開始了,而是從半路的6+1+1=8開始了。
我的程序,題目給的五個樣例都通過了:
#include <stdio.h>
#include <stdlib.h>
#define maxn 1000
int main()
{
int n, num;
int i, j, t;
int mine[maxn], his[maxn];
do {
num=0;
scanf("%d",&n);
if (n>=1 && n<=1000) {
for (i=0; i<n; i++) scanf("%d", &mine[i]);
for (i=0; i<n; i++) scanf("%d", &his[i]);
//Sort mine[]={5,4,6,1,9} to {1,4,5,6,9}.
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (mine[i]>mine[j]) {
t=mine[i];
mine[i]=mine[j];
mine[j]=t;
}
for (i=0; i<n; i++)
for (j=0; j<n; j++)
if (mine[i]>his[j] && mine[i]!=0 && his[j]!=0) {
num++;
printf("%d %d---%d.......",mine[i],his[j],num);
mine[i]=his[j]=0;
break;
}
printf("%d and %d \n", num, n/2+1);
if (num>=n/2+1)
printf("YES\n");
else
printf("NO\n");
}
} while(n!=0);
system("pause");
return 0;
}