danny52134 2009-05-02 03:45:00
点我顶贴
收藏
删除
那排序咋就是不对啊
谁帮我看看
#include<iostream>
using namespace std;
struct g
{
char na[14],s[20001];
}zw[1001];
int cmp(const void *a, const void *b)
{
if(strlen(((g *)a)->s)==strlen(((g *)b)->s))
{
if(strcmp(((g *)a)->s,((g *)b)->s)==0) return strcmp(((g *)a)->na,((g *)b)->na);
return strcmp(((g *)b)->s,((g *)a)->s);
}
return strlen(((g *)a)->s)<strlen(((g *)b)->s);
}
int n,k,i,j,result[491];
int main()
{
cin>>n;
memset(result,0,sizeof(result));
for(i=1;i<=n;i++)
cin>>zw[i].na>>zw[i].s;
for(i=1;i<=n;i++)
{
k=strlen(zw[i].s)-1;
for(j=490;j>=1;j--,k--)
if(k>=0) {result[j]+=zw[i].s[k]-48;result[j-1]+=result[j]/10;result[j]%=10;}
}
qsort(zw+1,n,sizeof(zw[0]),cmp);
for(i=1;i<=n;i++)
printf("%s\n",zw[i].na);
for(i=1;i<=490;i++)
printf("%d",result[i]);
return 0;
}