|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 a905448839 于 2023-8-24 21:48 编辑
代码如下#include <stdio.h>
#define INF -55365
typedef int ElementType;
int i,j,N,K,M;
void List_Insertion_Sort(ElementType* A[],int N,int table[],ElementType p[],int count[])
{//表排序特供版插入排序
ElementType Tmp;
int k;
// for(i = 1;i <= N;i++)
// {
//
// printf("%d %05d %d",i,table[i],A[table[i]][0]);
// for(j = 1;j <= K;j++)
// {
// if(A[table[i]][j] != -1)
// printf(" %d",A[table[i]][j]);
// else
// printf(" -");
// }
// printf("\n");
//
// }printf("\n");
for(j = 2;j <= N;j++)
{
Tmp = j;
i = j;
//printf("[%d]%d ?? [%d]%d\n",table[i-1],A[table[i-1]][0], Tmp,A[Tmp][0]);
for(i = j; i > 1 && A[table[i-1]][0] <= A[Tmp][0];i--)
{
// printf("[%d]%d ? [%d]%d\n",Tmp,A[Tmp][0], table[i-1],A[table[i-1]][0]);
if(A[Tmp][0] > A[table[i-1]][0])
table[i] = table[i-1];
else if(A[Tmp][0] == A[table[i-1]][0])
{
if(count[table[i-1]] < count[Tmp])
{
table[i] = table[i-1];
}
else
break;
}
}
table[i] = Tmp;
// printf("table:");
// for(i = 1;i <= N;i++)
// {
// printf("%d ",table[i]);
// }
// printf("\n");
//
// int i,j;
// for(i = 1;i <= N;i++)
// {
// printf("%d %05d %d",i,table[i],A[table[i]][0]);
// for(j = 1;j <= K;j++)
// {
// if(A[table[i]][j] != -1)
// printf(" %d",A[table[i]][j]);
// else
// printf(" -");
// }
// printf("\n");
//
// }printf("\n");
}
}
int main()
{
scanf("%d %d %d",&N,&K,&M);
ElementType p[K+1];
for(i = 1;i <= K;i++)
scanf("%d",&p[i]);
int count[N+1];
ElementType Grade_table[N+1][K+1];
for(i = 0;i <= N;i++)
{
count[i] = 0;
Grade_table[i][0] = 0;
for(j = 1;j <= K;j++)
{
Grade_table[i][j] = -2;
}
}
for(i = 0;i < M;i++)
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(Grade_table[a][b] < c)
{
if(c == p[b])
count[a]++;
if(Grade_table[a][b] != -2)
{
Grade_table[a][0] += c - Grade_table[a][b];
Grade_table[a][b] = c;
}
else
{
if(c != -1)
Grade_table[a][0] += c;
Grade_table[a][b] = c;
}
}
}
int table[N+1];
for(i = 0;i <= N;i++)
table[i] = i;
List_Insertion_Sort(Grade_table,N,table,p,count);
int last = 55555;
int cnt = 1;
int rank = 1;
for(i = 1;i <= N;i++)
{
if(Grade_table[table[i]][0] == 0)
{
int fag = 0;
for(j = 1;j <= K;j++)
{
if(Grade_table[table[i]][j] != -2 && Grade_table[table[i]][j] != -1)
{
fag = 1;
break;
}
}
if(fag)
{
if(Grade_table[table[i]][0] !=last)
cnt = rank;
last = Grade_table[table[i]][0];
printf("%d %05d %d",cnt,table[i],Grade_table[table[i]][0]);
for(j = 1;j <= K;j++)
{
if(Grade_table[table[i]][j] != -2 && Grade_table[table[i]][j] != -1)
printf(" %d",Grade_table[table[i]][j]);
else if(Grade_table[table[i]][j] == -2)
printf(" -");
else if(Grade_table[table[i]][j] == -1)
printf(" 0");
}
printf("\n");
rank++;
}
}
else if(Grade_table[table[i]][0] > 0)
{
if(Grade_table[table[i]][0] != last)
cnt = rank;
last = Grade_table[table[i]][0];
printf("%d %05d %d",cnt,table[i],Grade_table[table[i]][0]);
for(j = 1;j <= K;j++)
{
if(Grade_table[table[i]][j] != -2 && Grade_table[table[i]][j] != -1)
printf(" %d",Grade_table[table[i]][j]);
else if(Grade_table[table[i]][j] == -2)
printf(" -");
else if(Grade_table[table[i]][j] == -1)
printf(" 0");
}
printf("\n");
rank++;
}
}
return 0;
}
这样传报错了。。。 List_Insertion_Sort(Grade_table,N,table,p,count);
void List_Insertion_Sort(ElementType* A[],int N,int table[],ElementType p[],int count[])
求解报错原因和解决方法 谢谢
|
|