poj1007,wrong answer,但过程觉得无错?
#include<stdio.h>#include<stdlib.h>intmain(){intnum,line,j,k,i;scanf("%d%d",&num,&lin...
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num,line,j,k,i;
scanf("%d %d",&num,&line);
while(num>0&&num<=50&&line>0&&line<=100)
{
struct order{
int flag;
char buf[num];
int reverse;
} boy[line];
for(i=0;i<line;i++)
{
boy[i].flag=i+1;
scanf("%s",boy[i].buf);
}
for(i=0;i<line;i++)
for(j=0;j<num;j++)
for(k=j+1;k<num;k++){
if(boy[i].buf[j]>boy[i].buf[k])
{
boy[i].reverse++;
}
else continue;
}
int cmp(const void *a,const void *b)
{
if(((struct order *)a)->reverse!=((struct order *)b)->reverse)
return(((struct order *)a)->reverse>((struct order *)b)->flag);
else
return(((struct order *)a)->flag-((struct order *)b)->flag);
}
qsort(boy,line,sizeof(boy[0]),cmp);
for(i=0;i<line;i++)
{
printf("%s\n",boy[i].buf);
}
break;
}
return 0;
} 展开
#include<stdlib.h>
int main()
{
int num,line,j,k,i;
scanf("%d %d",&num,&line);
while(num>0&&num<=50&&line>0&&line<=100)
{
struct order{
int flag;
char buf[num];
int reverse;
} boy[line];
for(i=0;i<line;i++)
{
boy[i].flag=i+1;
scanf("%s",boy[i].buf);
}
for(i=0;i<line;i++)
for(j=0;j<num;j++)
for(k=j+1;k<num;k++){
if(boy[i].buf[j]>boy[i].buf[k])
{
boy[i].reverse++;
}
else continue;
}
int cmp(const void *a,const void *b)
{
if(((struct order *)a)->reverse!=((struct order *)b)->reverse)
return(((struct order *)a)->reverse>((struct order *)b)->flag);
else
return(((struct order *)a)->flag-((struct order *)b)->flag);
}
qsort(boy,line,sizeof(boy[0]),cmp);
for(i=0;i<line;i++)
{
printf("%s\n",boy[i].buf);
}
break;
}
return 0;
} 展开
1个回答
推荐于2016-09-15
展开全部
Wrong Answer就是你程序有问题,跑出来的结果跟正确答案不一样!
建议你好好修改你的程序,用Debug的方式慢慢跑一边,这样发现错误了,对自己的提高会很大!
另外,要学会用STL中的标准库来做题,比如此题中的sort,就可以直接用,安全有效!
附上我的AC代码,写的很烂,仅供参开。
#include<iostream>
#include<algorithm>
#define N 54
#define M 105
using namespace std;
char str[M][N];
struct node
{
int num;
char *p;
}a[M];
bool less(struct node a,struct node b)
{
return a.num<b.num;
}
int main()
{
int m,n;
int i,j,k;
while(cin>>n>>m)
{
for(i=0;i<m;i++)
{
cin>>str[i];
a[i].p=str[i];
a[i].num=0;
for(j=0;j<n-1;j++)
for(k=j+1;k<n;k++)
if(str[i][j]>str[i][k])
a[i].num++;
}
sort(a,a+m,less);
for(i=0;i<m;i++)
cout<<a[i].p<<endl;
}
}
建议你好好修改你的程序,用Debug的方式慢慢跑一边,这样发现错误了,对自己的提高会很大!
另外,要学会用STL中的标准库来做题,比如此题中的sort,就可以直接用,安全有效!
附上我的AC代码,写的很烂,仅供参开。
#include<iostream>
#include<algorithm>
#define N 54
#define M 105
using namespace std;
char str[M][N];
struct node
{
int num;
char *p;
}a[M];
bool less(struct node a,struct node b)
{
return a.num<b.num;
}
int main()
{
int m,n;
int i,j,k;
while(cin>>n>>m)
{
for(i=0;i<m;i++)
{
cin>>str[i];
a[i].p=str[i];
a[i].num=0;
for(j=0;j<n-1;j++)
for(k=j+1;k<n;k++)
if(str[i][j]>str[i][k])
a[i].num++;
}
sort(a,a+m,less);
for(i=0;i<m;i++)
cout<<a[i].p<<endl;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询