本文主要是介绍nyoj 1038 纸牌游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
poj 的一道改编题,说是翻译题更恰当,因为只是小幅度改动。
一道模拟题,代码掌控能力比较好,思维逻辑清晰的话就能AC。
代码如下:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{char c[5];int rk;char da[5];int num;
}s[4][15];bool cmp(node a,node b)
{if(a.rk==b.rk) return a.num<b.num;return a.rk>b.rk;
}int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);char s1[150],s2[60],s3[2];while(~scanf("%s",s3)){scanf("%s%s",s1,s2);strcat(s1,s2);for(int i=0,j=0,cnt1=0;i<104;i+=2){s[j][cnt1].c[0]=s1[i+1];if(s1[i+1]=='C') s[j][cnt1].rk=4;else if(s1[i+1]=='D') s[j][cnt1].rk=3;else if(s1[i+1]=='S') s[j][cnt1].rk=2;else if(s1[i+1]=='H') s[j][cnt1].rk=1;s[j][cnt1].da[0]=s1[i];if(s1[i]>='2'&&s1[i]<='9') s[j][cnt1].num=s1[i]-'0';else if(s1[i]=='A') s[j][cnt1].num=14;else if(s1[i]=='T') s[j][cnt1].num=10;else if(s1[i]=='J') s[j][cnt1].num=11;else if(s1[i]=='Q') s[j][cnt1].num=12;else if(s1[i]=='K') s[j][cnt1].num=13;j++;if(j%4==0)cnt1++;j%=4;}for(int i=0;i<4;i++)sort(s[i],s[i]+13,cmp);int mark,i,sum;if(s3[0]=='S') mark=3;else if(s3[0]=='W') mark=2;else if(s3[0]=='N') mark=1;else mark=0;for(sum=1;sum<5;sum++){if(sum==1) printf("East player:\n");else if(sum==2) printf("South player:\n");else if(sum==3) printf("West player:\n");else printf("North player:\n");printf("+---++---++---++---++---++---++---++---++---++---++---++---++---+\n");for(int k=0;k<13;k++)printf("|%s %s|",s[mark][k].da,s[mark][k].da);printf("\n");for(int k=0;k<13;k++)printf("| %s |",s[mark][k].c);printf("\n");for(int k=0;k<13;k++)printf("|%s %s|",s[mark][k].da,s[mark][k].da);printf("\n");printf("+---++---++---++---++---++---++---++---++---++---++---++---++---+\n");mark++;mark%=4;}printf("\n");}return 0;
}
这篇关于nyoj 1038 纸牌游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!