⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2030.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 2030 on 2006-06-03 at 08:02:50 */ 
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const char COLOR[] = "CDHS";
const char VALUE[] = "A234567891JQK";

class Card {
public:
	int v, c;
	void make();
	bool operator <(const Card&) const;
	void print() const;
};
void Card::make() {
	char card[4]; scanf("%s", card);
	int len = strlen(card);
	for(v = 0; VALUE[v] != card[0]; v++) ;
	for(c = 0; COLOR[c] != card[len-1]; c++) ;
}
bool Card::operator <(const Card& cd) const {
	if(v != cd.v) return v < cd.v;
	else return c < cd.c;
}
void Card::print() const {
	printf(" %c", VALUE[v]);
	if(v == 9) putchar('0');
	putchar(COLOR[c]);
}

int main()
{
	Card c[5];
	int t, T, i;

	scanf("%d", &T);
	for(t = 1; t <= T; t++) {
		for(i = 0; i < 5; i++) c[i].make();
		sort(c, c+5);
		do {
			if(c[0].c != c[1].c) continue;
			int nv = c[1].v, m = 2, l[2], ln = 0;
			for(i = 3; i < 5; i++)
				if(c[i] < c[m]) m = i;
			nv += m-1;
			for(i = 2; i < 5; i++)
				if(i != m) l[ln++] = i;
			if(c[l[1]] < c[l[0]]) nv += 3;
			if(nv%13 == c[0].v) break;
		} while(next_permutation(c, c+5));
		printf("Problem %d:", t);
		for(i = 0; i < 5; i++) c[i].print();
		putchar('\n');
	}
	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -