ps:这道题使我想锤人,开始一直presentation error,就是你输出的计算结果是正确的,但是多了空格啊,换行啊等等,令人无语至极,还有那个啊啊啊啊啊啊啊啊啊,我这个题的算法也很差劲,仅供参考,勿喷,毕竟我还是个小白……
牌局由四个人构成,围成一圈。我们称四个方向为北 东 南 西。对应的英文是North,East,South,West。游戏一共由一副扑克,也就是52张构成。开始,我们指定一位发牌员(东南西北中的一个,用英文首字母标识)开始发牌,发牌顺序为顺时针,发牌员第一个不发自己,而是发他的下一个人(顺时针的下一个人)。这样,每个人都会拿到13张牌。
现在我们定义牌的顺序,首先,花色是(梅花)<(方片)<(黑桃)<(红桃),(输入时,我们用C,D,S,H分别表示梅花,方片,黑桃,红桃,即其单词首字母)。对于牌面的值,我们规定2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < T < J < Q < K < A。
现在你作为上帝,你要从小到大排序每个人手中的牌,并按照给定格式输出。(具体格式见输出描述和样例输出)。
我把输入数据粘贴出来把
Sample InputN
CTCAH8CJD4C6D9SQC7S5HAD2HJH9CKD3H6D6D7H3HQH4C5DKHKS9
SJDTS3S7S4C4CQHTSAH2D8DJSTSKS2H5D5DQDAH7C9S8C8S6C2C3
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct poker{
char color;//花色
char element;//牌面值
int value;
};
struct poker pok_N[52];//北
struct poker pok_E[52];//东
struct poker pok_S[52];//南
struct poker pok_W[52];//西
int change(char col,char ele){
int cl,el,val;
if(col == 'C') cl=0;
if(col == 'D') cl=13;
if(col == 'S') cl=26;
if(col == 'H') cl=39;
//牌面值
if(ele == '2'){el=2;}if(ele == '3'){el=3;}if(ele == '4'){el=4;}
if(ele == '5'){el=5;}if(ele == '6'){el=6;}if(ele == '7'){el=7;}
if(ele == '8'){el=8;}if(ele == '9'){el=9;}if(ele == 'T'){el=10;}
if(ele == 'J'){el=11;}if(ele == 'Q'){el=12;}if(ele == 'K'){el=13;}
if(ele == 'A'){el=14;}
val=cl+el;
return val;
}
bool cmp(poker a,poker b){
return a.value<b.value;
}
int main(){
char ple;string str1,str2;char str1_1[52][2];
int tag,dog;//标签,跟踪狗
cin>>ple;
while(ple != '#'){
cin>>str1>>str2;
tag=0;
for(int j=0;j<52;j+=2){
str1_1[tag][0]=str1[j];str1_1[tag][1]=str1[j+1];
str1_1[tag+26][0]=str2[j];str1_1[tag+26][1]=str2[j+1];
tag++;
}
dog=0;
if(ple == 'N'){
for(int i=0;i<13;i++){
pok_E[i].color=str1_1[dog][0];pok_E[i].element=str1_1[dog][1];
pok_S[i].color=str1_1[dog+1][0];pok_S[i].element=str1_1[dog+1][1];
pok_W[i].color=str1_1[dog+2][0];pok_W[i].element=str1_1[dog+2][1];
pok_N[i].color=str1_1[dog+3][0];pok_N[i].element=str1_1[dog+3][1];
dog+=4;
}
}
else if(ple == 'E'){
for(int i=0;i<13;i++){
pok_S[i].color=str1_1[dog][0];pok_S[i].element=str1_1[dog][1];
pok_W[i].color=str1_1[dog+1][0];pok_W[i].element=str1_1[dog+1][1];
pok_N[i].color=str1_1[dog+2][0];pok_N[i].element=str1_1[dog+2][1];
pok_E[i].color=str1_1[dog+3][0];pok_E[i].element=str1_1[dog+3][1];
dog+=4;
}
}
else if(ple == 'S'){
for(int i=0;i<13;i++){
pok_W[i].color=str1_1[dog][0];pok_W[i].element=str1_1[dog][1];
pok_N[i].color=str1_1[dog+1][0];pok_N[i].element=str1_1[dog+1][1];
pok_E[i].color=str1_1[dog+2][0];pok_E[i].element=str1_1[dog+2][1];
pok_S[i].color=str1_1[dog+3][0];pok_S[i].element=str1_1[dog+3][1];
dog+=4;
}
}
else{
for(int i=0;i<13;i++){
pok_N[i].color=str1_1[dog][0];pok_N[i].element=str1_1[dog][1];
pok_E[i].color=str1_1[dog+1][0];pok_E[i].element=str1_1[dog+1][1];
pok_S[i].color=str1_1[dog+2][0];pok_S[i].element=str1_1[dog+2][1];
pok_W[i].color=str1_1[dog+3][0];pok_W[i].element=str1_1[dog+3][1];
dog+=4;
}
}
for(int mo=0;mo<13;mo++){
pok_E[mo].value=change(pok_E[mo].color,pok_E[mo].element);
pok_W[mo].value=change(pok_W[mo].color,pok_W[mo].element);
pok_N[mo].value=change(pok_N[mo].color,pok_N[mo].element);
pok_S[mo].value=change(pok_S[mo].color,pok_S[mo].element);
}
sort(pok_E,pok_E+13,cmp);sort(pok_S,pok_S+13,cmp);
sort(pok_N,pok_N+13,cmp);sort(pok_W,pok_W+13,cmp);
cout<<"South player:"<<endl;
cout<<"+---+---+---+---+---+---+---+---+---+---+---+---+---+"<<endl;
for(int mh=0;mh<13;mh++){
cout<<"|"<<pok_S[mh].element<<" "<<pok_S[mh].element;
if(mh==12) cout<<"|";
} cout<<endl;
for(int mh=0;mh<13;mh++){
cout<<"| "<<pok_S[mh].color<<" ";
if(mh==12) cout<<"|";
} cout<<endl;
for(int mh=0;mh<13;mh++){
cout<<"|"<<pok_S[mh].element<<" "<<pok_S[mh].element;
if(mh==12) cout<<"|";
} cout<<endl;
cout<<"+---+---+---+---+---+---+---+---+---+---+---+---+---+"<<endl;
//cout<<endl;
cout<<"West player:"<<endl;
cout<<"+---+---+---+---+---+---+---+---+---+---+---+---+---+"<<endl;
for(int mh=0;mh<13;mh++){
cout<<"|"<<pok_W[mh].element<<" "<<pok_W[mh].element;
if(mh==12) cout<<"|";
} cout<<endl;
for(int mh=0;mh<13;mh++){
cout<<"| "<<pok_W[mh].color<<" ";
if(mh==12) cout<<"|";
} cout<<endl;
for(int mh=0;mh<13;mh++){
cout<<"|"<<pok_W[mh].element<<" "<<pok_W[mh].element;
if(mh==12) cout<<"|";
} cout<<endl;
cout<<"+---+---+---+---+---+---+---+---+---+---+---+---+---+"<<endl;
//cout<<endl;
cout<<"North player:"<<endl;
cout<<"+---+---+---+---+---+---+---+---+---+---+---+---+---+"<<endl;
for(int mh=0;mh<13;mh++){
cout<<"|"<<pok_N[mh].element<<" "<<pok_N[mh].element;
if(mh==12) cout<<"|";
} cout<<endl;
for(int mh=0;mh<13;mh++){
cout<<"| "<<pok_N[mh].color<<" ";
if(mh==12) cout<<"|";
} cout<<endl;
for(int mh=0;mh<13;mh++){
cout<<"|"<<pok_N[mh].element<<" "<<pok_N[mh].element;
if(mh==12) cout<<"|";
} cout<<endl;
cout<<"+---+---+---+---+---+---+---+---+---+---+---+---+---+"<<endl;
//cout<<endl;
cout<<"East player:"<<endl;
cout<<"+---+---+---+---+---+---+---+---+---+---+---+---+---+"<<endl;
for(int mh=0;mh<13;mh++){
cout<<"|"<<pok_E[mh].element<<" "<<pok_E[mh].element;
if(mh==12) cout<<"|";
} cout<<endl;
for(int mh=0;mh<13;mh++){
cout<<"| "<<pok_E[mh].color<<" ";
if(mh==12) cout<<"|";
} cout<<endl;
for(int mh=0;mh<13;mh++){
cout<<"|"<<pok_E[mh].element<<" "<<pok_E[mh].element;
if(mh==12) cout<<"|";
} cout<<endl;
cout<<"+---+---+---+---+---+---+---+---+---+---+---+---+---+"<<endl;
cout<<endl;
cin>>ple;
}
return 0;
}
这可怕的输出,我枯了。#<>#.