首页 > ACM题库 > 九度OJ > 九度-1363-欢乐斗地主[解题代码]
2013
12-13

九度-1363-欢乐斗地主[解题代码]

题目描述:

         如果大家玩过欢乐斗地主这个游戏,就一定知道有一个具有“提示”功能的按钮。如果你不知道你现在手里的牌有没有比上家大的牌,并且你也懒得去一张一张地看你手中的牌。这时候你就可以点“提示”按钮,系统会告诉你是否有这样的牌。

         如果你是一个喜欢挑战的人,你就一定会想,能不能写一个程序,让它实现欢乐斗地主中的“提示”按钮的功能。

         现在,我们把“提示”按钮所具有的功能简化,它只需要找出在上家出的牌是“三带一对”的情况下你手中的牌是否比上家的牌大。

输入:

         每组测试数据可能有多组输入,对于每一组输入,

         输入的第一行包括一个整数N(1<=N<=18),代表你手中现在还剩下的扑克牌的张数。

         接下来的一行包括N个数字(1-13,分别代表扑克牌中的A-K),给你的这N个数字是无序的。

         接下来的一行包括五个数字,前三个数字是相同的,后两个数字是相同的,代表上家出的“三带一对”。

输出:

         如果你手中的牌有比上家的“三带一对”大的,输出这样的牌,输出的格式与输入中的第三行相同,即五个数字:前三个是一样的,后两个是一样的,代表你手中的“三带一对”。如果你手中没有比上家的“三带一对”大的牌,请输出“My God”。

样例输入:
8
1 6 4 8 4 7 6 4
3 3 3 9 9
8
1 6 4 8 4 7 6 4
8 8 8 2 2
样例输出:
4 4 4 6 6
My God
提示:

         1.“三带一对”:三张同样数字的牌+两张同样数字的牌,此时这五张牌可以同时出。“三带一对”比大小的规则如下——只需要比较三张同样数字的牌的数字的大小,而不需要考虑两张同样数字的牌的数字的大小。比如:“三个5带两个3”,比“三个4带两个8”要大。

         2.大家都知道,在扑克牌中A2要比3-K都要大,请大家在程序中进行处理。

3.如果你手中的牌有多种出法能够比上家的“三带一对”大,你需要选择“三带一对”中三张相同的牌数字较小的那种出法。比如说,如果上家出的牌是3 3 3 4 4,而你现在手中有6 6 6 7 7 76张牌,你需要出的牌是6 6 6 7 7,而不是7 7 7 6 6,如果三带最小的有多个,则需要输出一对值最小的那个结果

4.你可以放心,我们发的牌以及出的牌中不会出现大小王。


cpp 代码如下:

#include <stdio.h>

int main(){
	int n,t;
	int m,p;//上家 的出的牌

		while(scanf("%d",&n) != EOF){

			int arr[16] = {0};
			for(int i=0; i<n; i++){
				scanf("%d",&t);
				if(t==1 || t==2)
					t += 13;
				arr[t] ++;
 			}
			scanf("%d %d %d %d %d",&m,&m,&m,&p,&p);

			if(m==1 || m==2)
				 m += 13;
			int tag = 0;

			for(int i=m+1; i<=15; i++){
				if(tag == 1)
					break;
				if(arr[i] >=3 ){
					for(int j=3; j<=15; j++)
						if(arr[j] >=2 && i!=j){
							tag = 1;
							if(i==14 || i==15)
								i -= 13;
							if(j==14 || j==15)
								j -= 13;
							printf("%d %d %d %d %d\n",i,i,i,j,j);
							break;
						}
				}
			}
			if(tag == 0)
				printf("My God\n");
		}

	return 0;
}

/**************************************************************
	Problem: 1363
	User: coder
	Language: C
	Result: Accepted
	Time:80 ms
	Memory:908 kb
****************************************************************/

 


  1. 其实国内大部分公司对算法都不够重视。特别是中小型公司老板根本都不懂技术,也不懂什么是算法,从而也不要求程序员懂什么算法,做程序从来不考虑性能问题,只要页面能显示出来就是好程序,这是国内的现状,很无奈。