首页 > 代码库 > POJ 2062 Card Game Cheater
POJ 2062 Card Game Cheater
题意:两个人打牌,牌的大小按照2,3,4...9,T,J,Q,K,A排序,如果点数相等就按照H>S>D>C的花色排序。告诉你第一个人的手牌,让你安排第二个人的手牌,使得得分最大(按照顺序依次比较每张牌大小)
1 #include <iostream> 2 #include <algorithm> 3 #include <queue> 4 using namespace std; 5 int dot[300]; 6 int InputNum,NumOfCards,point; 7 int Adm[26],Eve[26]; 8 char str1,str2;//牌的点数和花型 9 void init();10 void process();11 int main()12 {13 //freopen("D:\\t.txt","r",stdin);14 init();15 process();16 return 0;17 }18 void init(){//对数据进行初始化,将牌数*1019 dot[‘T‘] = 100;dot[‘J‘] = 110;dot[‘Q‘] = 120;dot[‘K‘] = 130;dot[‘A‘] = 140;20 for(int m = 2;m <= 9;m++){21 dot[m + ‘0‘] = m * 10;22 }23 dot[‘H‘] = 4;dot[‘S‘] = 3;dot[‘D‘] = 2;dot[‘C‘] = 1;24 }25 void process(){26 while(cin>>InputNum){27 for(int i = 0;i < InputNum;i++){28 cin>>NumOfCards;29 point = 0;30 //发牌31 for(int k = 0;k < NumOfCards;k++){32 cin>>str1>>str2;33 Adm[k]= dot[str1] + dot[str2];//将牌数扩大十倍,加上花色34 }35 for(int j = 0;j < NumOfCards;j++){36 cin>>str1>>str2;37 Eve[j] = dot[str1] + dot[str2];38 }39 //40 sort(Adm,Adm + NumOfCards);//将两个人的牌数按升序排列41 sort(Eve,Eve + NumOfCards);42 for(int i = 0, j = 0;i < NumOfCards&&j < NumOfCards;){43 if(Eve[i] > Adm[j]){44 point++;45 i++;j++;46 }47 else i++;48 }//将两个人的牌按升序排列之后,进行比较49 /*比如adm[3]={1,2,3},eve[3] = {1,2,3};50 第一次adm[0] = eve[0]51 然后用eve[1]与adm[0]比较,eve[1]>adm[0];52 eve[2]>adm[1];53 就能求出eve胜adm多少次了*/54 cout<<point<<endl;55 }56 }57 }
POJ 2062 Card Game Cheater
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。