當前位置:編程學習大全網 - 編程軟體 - C語言 淵子賽馬 非常規解法出現不理解的問題

C語言 淵子賽馬 非常規解法出現不理解的問題

我調試了壹下,需要把兩層for循環裏面if語句裏面的執行體

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;

}

  • 上一篇:程序員是學什麽專業?
  • 下一篇:萊蕪人才招聘市場是什麽時間
  • copyright 2024編程學習大全網