|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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[])
复制代码
求解报错原因和解决方法 谢谢
|
|