#14289: 求解,傳上去一直WA,但自己測卻沒問題,能幫我看看嗎?


jimmy9911105@gmail.com (........)

學校 : 國立中正大學
編號 : 81380
來源 : [140.112.48.126]
最後登入時間 :
2021-12-19 17:01:52
a528. 大數排序 | From: [114.47.156.96] | 發表日期 : 2018-07-10 23:41

下面是我的程式碼,希望有人能提供協助一下~

WA(line:97)

您的答案為: -1
正確答案為: -9

 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int cmp(const void *s1, const void *s2)
{
return(strcmp((char *)s1,(char *)s2) );
}

void swap(char *a,char *b)
{
char t[1002];
strcpy(t, a);
strcpy(a, b);
strcpy(b, t);
}
void cmp1(char s[1002][150],int n)
{
int i,j;
for(i=0; i<n; i++)
for(j=i; j<n; j++)
{
if(strlen(s[i])>strlen(s[j]))
{
swap(s[i],s[j]);
}
}
}
char temp[1002][150];
void cmp2(char s[1002][150],int n)
{
int k=0;
int i,j,w;
while(k<n)
{
w=0;
int k1=k;
for(i=k; i<n; i++)
{
k++;
if(strlen(s[i+1])>strlen(s[i]))
{
break;
}
else
{
strcpy(temp[i-k1], s[i]);
}
w++;
}
qsort(temp, w, sizeof(*temp), cmp);
for(i=0; i<w; i++)
{
strcpy(s[k1+i], temp[i]);
}
}
}
char S[1002][150];
char s[1002][150];
char na[1002][150];
int main()
{
int i=0,k,w;
int j;
int n,n1;
char *a,*b,*t;
while(scanf("%d",&n)!=EOF)
{
n1=0;
k=0;
w=0;
/*輸入參數,並依照正負做分類*/
for(i=0; i<n; ++i)
{
scanf("%s",S[i]);
if(S[i][0]=='-')
{
strcpy(na[k], S[i]);
k++;
}
else
{
n1++;
strcpy(s[w], S[i]);
w++;
}
}
/*照位數排序,由小到大*/
cmp1(s,n1);
cmp1(na,n-n1);

/*同位數數字大小排序*/
cmp2(s,n1);
cmp2(na,n-n1);

/*印出結果*/
for(i=n-n1-1; i>=0; i--)
puts(na[i]);
for(i=0; i<n1; i++)
puts(s[i]);
}
}

 
ZeroJudge Forum