3302326_wa.c
来自「北大大牛代码 1240道题的原代码 超级权威」· C语言 代码 · 共 60 行
C
60 行
#include <stdio.h>
#include <string.h>
#define MIN(a,b) ((a)<(b)?(a):(b))
int kase=0;
int n,t;
int account[32];
char name[32][32];
int read_case()
{
int i,j,k,amount;
char name1[30],name2[30];
scanf("%d %d",&n,&t);
if (n==0 && t==0) return 0;
for (i=0; i<n; i++)
{
scanf("%s",name[i]);
account[i] = 0;
}
for (k=0; k<t; k++)
{
scanf("%s %s %d\n",name1,name2,&amount);
for (i=0; strcmp(name1,name[i]); i++);
for (j=0; strcmp(name2,name[j]); j++);
account[i] -= amount;
account[j] += amount;
}
return 1;
}
void solve_case()
{
int src,dst,transfer;
printf("Case #%d\n",++kase);
while (1)
{
for (src=0; src<n; src++)
if (account[src]>0) break; /* person who has to pay found */
for (dst=0; dst<n; dst++)
if (account[dst]<0) break; /* person who receives money found */
if (src==n || dst==n) break;
transfer = MIN(account[src],-account[dst]);
account[src] -= transfer;
account[dst] += transfer;
printf("%s %s %d\n",name[src],name[dst],transfer);
break;
}
printf("\n");
}
int main()
{
while (read_case()) solve_case();
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?