栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3426 Snooker Referee

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3426 Snooker Referee

#include <cstdio>#include <cstring>struct Snooker{char name[2][30];int score[2];int ball_cnt[10];int red_cnt;int turn;int next;bool over;bool foul[5];int penalty;int ball_first;bool replaced[10];bool first;bool second;bool last;char stroke[2000];char ball_name[10];}game;void init1(){int i;game.score[0] = game.score[1] = 0;game.ball_cnt[1] = 15;for(i=2;i<=7;i++)game.ball_cnt[i] = 1;game.turn = 0;game.next = 1;game.last = false;game.over = false;}void init2(){game.red_cnt = 0;memset(game.foul,false,sizeof(game.foul));game.penalty = 4;game.ball_first = -1;memset(game.replaced,false,sizeof(game.replaced));game.first = game.second = false;}int gao1(){char ch[][10] = {"None","Red","Yellow","Green","Brown","Blue","Pink","Black","White"};for(int i=0;i<9;i++)if(strcmp(game.ball_name,ch[i])==0)return i;return -1;}void gao2(){int state = gao1();if(state==0)game.foul[0] = true;else {if(game.next == 1 && state > 1)game.foul[1] = true;else if(game.next > 1 && state == 1)game.foul[1] = true;else if(game.next <= 7 && game.next != state)game.foul[1] = true;}game.first = true;game.ball_first = state;}void gao3(){if(game.second){int state = gao1();if(game.ball_first != state)game.foul[2] = true;if(state > 7)game.foul[3] = true;if(state == 1)game.red_cnt++;game.replaced[state] = true;}}void gao4(){int i;if(game.last){if(game.foul[0] || game.foul[1] || game.foul[2] || game.foul[3]){printf("Foul!n");game.score[game.turn^1] += 7;}else if(game.second)game.score[game.turn] += 7;game.turn^=1;printf("%d : %dn",game.score[0],game.score[1]);if(game.foul[0] || game.foul[1] || game.foul[2] || game.foul[3] || game.second){if(game.score[0] == game.score[1]){printf("TienRespot Blackn");game.next = 7;}else{if(game.score[0] > game.score[1])printf("%s winsn",game.name[0]);elseprintf("%s winsn",game.name[1]);game.over = true;}}elseprintf("%s's turnn",game.name[game.turn]);return;}game.ball_cnt[1] -= game.red_cnt;if(game.foul[0] || game.foul[1] || game.foul[2] || game.foul[3]){printf("Foul!n");game.turn^=1;game.score[game.turn] += game.penalty;printf("%d : %dn",game.score[0],game.score[1]);if(game.replaced[2] || game.replaced[3] || game.replaced[4] || game.replaced[5] || game.replaced[6] || game.replaced[7]){char ch[][10] = {"","","Yellow","Green","Brown","Blue","Pink","Black"};printf("Respot");for(i=2;i<=7;i++){if(game.replaced[i])printf(" %s",ch[i]);}printf("n");}for(i=1;i<=7;i++){if(game.ball_cnt[i] > 0){game.next = i;break;}}if(!game.foul[3])printf("%s's turnn",game.name[game.turn]);elseprintf("%s's turn, in-handn",game.name[game.turn]);}else{if(game.next == 1)game.score[game.turn] += game.red_cnt;else if(game.second)game.score[game.turn] += game.ball_first;printf("%d : %dn",game.score[0],game.score[1]);if(game.next == 8 && game.second){char ch[][10] = {"","","Yellow","Green","Brown","Blue","Pink","Black"};printf("Respot");for(i=2;i<=7;i++){if(game.replaced[i])printf(" %s",ch[i]);}printf("n");}else{if(game.next > 1 && game.second){game.ball_cnt[game.next]--;if(game.ball_cnt[6] == 0)game.last = true;}}if(game.red_cnt > 0)game.next = 8;else{for(i=1;i<=7;i++){if(game.ball_cnt[i] > 0){game.next = i;break;}}}if(!game.second){game.turn^=1;printf("%s's turnn",game.name[game.turn]);}}}int Max(int a,int b){if(a > b)return a;return b;}int main(){int t,ca,len,i,fi;scanf("%d",&t);for(ca=1;ca<=t;ca++){if(ca>1)printf("n");printf("frame %dn",ca);init1();scanf(" %s %s",game.name[0],game.name[1]);getchar();printf("%s's turn, in-handn",game.name[game.turn]);while(!game.over){gets(game.stroke);if(strcmp(game.stroke,"Play again")==0){game.turn^=1;if(!game.foul[3])printf("%s's turnn",game.name[game.turn]);elseprintf("%s's turn, in-handn",game.name[game.turn]);continue;}if(strcmp(game.stroke,game.name[0])==0){game.turn=0;printf("%s's turn, in-handn",game.name[game.turn]);continue;}if(strcmp(game.stroke,game.name[1])==0){game.turn=1;printf("%s's turn, in-handn",game.name[game.turn]);continue;}len = strlen(game.stroke);init2();for(i=fi=0;i<len;i++){if(game.stroke[i] == ' ' || i + 1 == len){if(fi == 0)continue;if(i + 1 == len)game.ball_name[fi++] = game.stroke[i];if(gao1()<8)game.penalty = Max(game.penalty,gao1());if(!game.first)gao2();elsegame.second = true;gao3();fi = 0;memset(game.ball_name,'',sizeof(game.ball_name));}else{game.ball_name[fi++] = game.stroke[i];}}if(game.next<8)game.penalty = Max(game.penalty,game.next);gao4();}}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号