POJ-2339-Rock, Scissors, Paper

来源:互联网 发布:matlab mac安装教程 编辑:程序博客网 时间:2024/06/04 20:06

比较简单的一个剪刀石头布的问题,模拟的时候进行判断即可

代码:

#include<cstdio>#include<cstring>#include<iostream>using namespace std;char map[111][111],ans[111][111];int n,m,t,movex[4]={0,0,1,-1},movey[4]={1,-1,0,0};bool isborder(int x,int y){    if(x<0||x>=n||y<0||y>=m)return true;    return false;}bool Get(char a,char b){    if(a=='R'&&b=='P')return true;    if(a=='S'&&b=='R')return true;    if(a=='P'&&b=='S')return true;    return false;}int main(){    int T;    scanf("%d",&T);    while(T--)    {scanf("%d%d%d",&n,&m,&t);for(int i=0;i<n;i++)    scanf("%s",map[i]);memcpy(ans,map,sizeof(map));for(int i=0;i<t;i++){    for(int j=0;j<n;j++)for(int k=0;k<m;k++){    int flag=0;    for(int l=0;l<4;l++)    {int itx=j+movex[l];int ity=k+movey[l];if(isborder(itx,ity))    continue;if(Get(map[j][k],map[itx][ity])){    ans[j][k]=map[itx][ity];    flag=1;}    }    if(!flag)ans[j][k]=map[j][k];}    memcpy(map,ans,sizeof(ans));}for(int i=0;i<n;i++){    ans[i][m]='\0';    printf("%s\n",ans[i]);}printf("\n");    }    return 0;}


原创粉丝点击