为什么我的杭电1052田忌赛马也错了
我提交上去,程序运行到93ms就错了。但我真的发现不了错误,各位高手帮帮吗?顺便问一下,如果你调试程序是对的,但系统显示wa,这是自己该怎么就错啊!各位高手传授你们的经验。/*我的思路很简单,就是先排序,再用田忌最好的马与齐王相差最小的马比*/
#include"stdio.h" //选择排序。
void sort(int s[],int n)
{
int i,j,t,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(s[k]<s[j])
k=j;
if(k!=i)
{
t=s[i];
s[i]=s[k];
s[k]=t;
}
}
}
int main()
{
void sort(int s[],int n);
int i,j,k,n;
int a[1001]={0},b[1001]={0},c[1001]={3}; //a表示田忌的马,b表示齐王的马,c用来判定胜负。
long sum;
while(scanf("%d",&n)!=EOF&&n!=0)
{
for(i=0;i<n;i++) //把c里面元素全计为3.
c[i]=3;
k=0;sum=0; //k用来记录田忌的马赢齐王的那匹马序号。
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
sort(a,n);
sort(b,n);
for(i=0;i<n;i++)
for(j=k;j<n;j++)
{
if(a[i]>b[j]) //如果田忌的马赢就记为1.
{
k=j+1;
c[i]=1;
break;
}
if(a[i]==b[i]) //平就记为0.
{
k=j+1;
c[i]=0;
break;
}
}
for(i=0;i<n;i++) //其余的马就表示输了为-1.
if(c[i]>1)
c[i]=-1;
for(i=0;i<n;i++)
{
if(c[i]==1)
sum+=200;
if(c[i]==-1)
sum-=200;
}
printf("%ld\n",sum);
}
return 0;
}
//是不是算法哪里还有漏洞啊,各位高手顺便传授下你们调试的经验。