bnu1059 星际争霸之单挑 C语言版

来源:互联网 发布:淘宝热力图 编辑:程序博客网 时间:2024/04/28 17:02
北京师范大学珠海分校
Judge Online of ACM ICPC
1059 星际争霸之单挑
C语言版
  1. #include <stdio.h>
  2. #include <string.h>

  3. typedef struct
  4. {
  5.     char name[10];
  6.     int life,attack,defend;
  7. }army;

  8. void output(army x,army y,int sign)
  9. {
  10.     if (sign==1) printf("%s vs %s win/n",x.name,y.name);
  11.     else if (sign==-1) printf("%s vs %s lose/n",x.name,y.name);
  12.     else printf("%s vs %s draw/n",x.name,y.name);
  13. }

  14. int process(army x,army y)
  15. {
  16.     int i=0,x_attack,y_attack;
  17.     
  18.     x_attack=x.attack-y.defend;
  19.     if (x_attack<0) x_attack=0;
  20.     
  21.     y_attack=y.attack-x.defend;
  22.     if (y_attack<0) y_attack=0;
  23.     
  24.     while(i<1000)
  25.     {
  26.         if (x.life<y.life||(x.life==y.life&&strcmp(x.name,y.name)<0))
  27.         {
  28.             y.life-=x_attack;
  29.             if (y.life<=0) return 1;
  30.             x.life-=y_attack;
  31.             if (x.life<=0) return -1;
  32.         }
  33.         else
  34.         {
  35.             x.life-=y_attack;
  36.             if (x.life<=0) return -1;
  37.             y.life-=x_attack;
  38.             if (y.life<=0) return 1;
  39.         }
  40.         i++;
  41.     }
  42.     return 0;
  43. }

  44. int main()
  45. {
  46.     army a1,a2,a3;
  47.     int i,num=1,tmp;
  48.     while(scanf("%s%d%d%d",&a1.name,&a1.life,&a1.attack,&a1.defend)!=EOF)
  49.     {
  50.         scanf("%s%d%d%d",&a2.name,&a2.life,&a2.attack,&a2.defend);
  51.         scanf("%s%d%d%d",&a3.name,&a3.life,&a3.attack,&a3.defend);
  52.         printf("Case %d:/n",num++);
  53.         tmp=process(a1,a2);
  54.         output(a1,a2,tmp);
  55.         tmp=process(a1,a3);
  56.         output(a1,a3,tmp);
  57.         tmp=process(a2,a3);
  58.         output(a2,a3,tmp);
  59.     }
  60.     return 0;
  61. }

原创粉丝点击