您的位置:首页 > 其它

SDUSTOJ 1191 - 剪子包袱锤游戏 ( 结构体 函数的巧妙应用 )

2018-01-06 16:44 316 查看
Description

Tom、Jack和Mary三人在同一个小学上学,又住在同一个小区。所以每天上学、放学的路上,他们都玩一些小游戏。某天,三人玩剪子包袱锤(Scissors-Paper-Rock)。每人随机出一种,然后决定胜出者和失败者。

现在,请你编程,判断每次游戏的结果。

Input

输入为多行。第一行 含有2个数字M和N,其中0 < M < 100,表示总共进行了M次游戏。0 < N <= 10表示有N个人同时进行游戏。

第二行是N个人的名字,两两之间用空格隔开。

之后的M行,是M次游戏时每个人出的拳种(Scissors、Paper或Rock),每行含有N个输入,两两之间用空格隔开。

Output

输出有M行,每行输出与上述每行输入一一对应。输出分为3种情况:

1. 如果N个人无法决出胜负,且不是平局,则输出:No winner, no loser.

2. 如果N个人所出相同,则为平局,输出:Tie.

3. 如果一部分人胜出,则输出:winner1, winner2,… win loser1, loser2,…

其中,winner1,winner2与loser1,loser2等是对应人的姓名,输出顺序与输入的第2行中的姓名顺序相同。具体格式见样例。

Sample Input

3 3

Tom Jack Mary

Rock Rock Rock

Rock Paper Scissors

Rock Scissors Scissors

Sample Output

Tie.

No winner, no loser.

Tom win Jack,Mary.

思路

比较简单的题目 , 代码过程中巧妙地运用函数极大地精简了代码量

AC代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxn 15

struct game
{
char n[100];  //记录名字
char q[10];  //拳种
};
struct game p[maxn];

int tiejudge( int a, int b, int c )
{
if( a != 0 && b == 0 && c == 0 )
return 1;
return 0;
}

void put_results( struct game *p, char win, char fal, int b )
{
int times = 0;
for( int i = 0; i < b; i++ ){
if( p[i].q[0] == win ){
if( times )
printf(",");
printf("%s",p[i].n);
times++;
}
}
printf(" win ");
times = 0;
for( int i = 0; i < b; i++ ){
if( p[i].q[0] == fal ){
if( times )
printf(",");
printf("%s",p[i].n);
times++;
}
}
puts(".");
}

int main()
{
int a,b;
scanf("%d%d",&a,&b);
for( int i = 0; i < b; i++ )
scanf("%s",p[i].n);
while(a--){
int jd = 0, st = 0, bu = 0;
for( int i = 0; i < b; i++ ){
scanf("%s",p[i].q);
switch( p[i].q[0] ){
case 'S' : jd++;    break;
case 'R' : st++;    break;
case 'P' : bu++;    break;
}
}
if( jd != 0 && st != 0 && bu != 0 )
puts("No winner, no loser.");
else if( tiejudge(jd,st,bu) || tiejudge(st,bu,jd) || tiejudge(bu,jd,st) )
puts("Tie.");
else
{
if( jd == 0 )   put_results( p, 'P', 'R', b );
else if( st == 0 )   put_results( p, 'S', 'P', b );
else if( bu == 0 )   put_results( p, 'R', 'S', b );
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SDUSTOJ 结构体 函数