题目:HDOJ-1528
题目描述:
Adam和Eve玩一副扑克牌,两边分到相同数量的牌,摆好以后对应位置的牌比大小,每个对应位置,谁的牌大谁得一分。Adam牌已经摆好位置,Eve已经知道Adam所有位置的牌是什么,求Eve能得到的最多分数。
牌的大小2<3<4<…<9<T<J<Q<K<A,当牌大小相同时,花色C<D<S<H。
思路:
将牌面统一转化成对应大小顺序的数字进行存储,牌的大小2,3,4,…,K,A对应20,30,40,…,130,140,牌的花色C,D,S,H对应1,2,3,4,然后两者相加。
同样的两边按顺序排好,依次比较,这里比田忌赛马简单的就是,不会存在相同的牌,每一对牌一定有胜负而不存在平局。
以下AC代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
void read(int x[],int i) //读取操作
{
char v, s; //v为大小,s为花色v = getchar();s = getchar();if ('2' <= v && v <= '9')x[i] = (v - '0') * 10