#9856: 基數排序法求救!!!


B0306125 (Rekkursion)

學校 : 臺北市立大安高級工業職業學校
編號 : 47515
來源 : [140.112.238.177]
最後登入時間 :
2024-11-07 22:06:51
a233. 排序法~~~ 挑戰極限 -- 24TH 成功電研社內考 | From: [111.184.39.89] | 發表日期 : 2015-05-22 20:13

不好意思,以下是我的基數排序,算法應該都對但是第四、第五、第七測試點怎樣就是過不了,希望能有高手解惑,謝謝!!

#include <stdio.h> 
#include <string.h>
#define MaxSize 1000000
int a[MaxSize] , q[10][MaxSize / 10];
int LengthJudge(int);
int main()
{
int n , N , k , j , c , max , MaxLength , num[10] = {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0};
scanf("%d" , &N);
for(k = 0 , max = 0 ; k < N ; k++)
{
scanf("%d" , &a[k]);
if(a[k] > max)
{
max = a[k];
}
}
MaxLength = LengthJudge(max);
n = 1;
while(n <= MaxLength)
{
for(k = 0 ; k < N ; k++)
{
c = (a[k] / n) % 10;
q[c][num[c]] = a[k];
num[c]++;
}
k = 0;
for(c = 0 ; c < 10 ; c++)
{
if(num[c] != 0)
{
for(j = 0 ; j < num[c] ; j++)
{
a[k] = q[c][j];
k++;
}
}
num[c] = 0;
}
n *= 10;
}
for(k = 0 ; k < N ; k++)
{
printf("%d " , a[k]);
}
printf("\n");
return 0;
}
int LengthJudge(int max)
{
int t = 0 , k = 1;
while(max > 0)
{
max /= 10;
t++;
}
while(t--)
{
k *= 10;
}
return k;
}
 
#9960: Re:基數排序法求救!!!


B0306125 (Rekkursion)

學校 : 臺北市立大安高級工業職業學校
編號 : 47515
來源 : [140.112.238.177]
最後登入時間 :
2024-11-07 22:06:51
a233. 排序法~~~ 挑戰極限 -- 24TH 成功電研社內考 | From: [111.184.39.89] | 發表日期 : 2015-06-29 21:17


已解決  
ZeroJudge Forum