您的位置:首页 > 编程语言 > C语言/C++

第六届蓝桥杯C/C++A组第八题解答

2015-05-11 19:17 169 查看
题目:

小明被劫持到X赌城,被迫与其他3人玩牌。

一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。

这时,小明脑子里突然冒出一个问题:

如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

请填写该整数,不要填写任何多余的内容或说明文字。

思路:

这道题的主要思路就是暴力循环,依题意“如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种”,主要要考虑的问题是不考虑花色,只考虑点数,那么四个人就是每人13张牌,也就是说,我们把扑克牌按点数平均分成13份(每份4张同样点数的牌),每份中有若干张牌(最小为0张,最大为4张)被发到小明手里,发给小明的这13份不同点数的牌的数量加起来一共有13张。这就是这道题按照暴力循环解答的思路。

#include<iostream>
using namespace std;
int main()
{
int a[13]={0};
int result=0,count=0;
for(a[0]=0;a[0]<=4;a[0]++)
{
for(a[1]=0;a[1]<=4;a[1]++)
{
for(a[2]=0;a[2]<=4;a[2]++)
{
for(a[3]=0;a[3]<=4;a[3]++)
{
for(a[4]=0;a[4]<=4;a[4]++)
{
for(a[5]=0;a[5]<=4;a[5]++)
{
for(a[6]=0;a[6]<=4;a[6]++)
{
for(a[7]=0;a[7]<=4;a[7]++)
{
for(a[8]=0;a[8]<=4;a[8]++)
{
for(a[9]=0;a[9]<=4;a[9]++)
{
for(a[10]=0;a[10]<=4;a[10]++)
{
for(a[11]=0;a[11]<=4;a[11]++)
{
for(a[12]=0;a[12]<=4;a[12]++)
{
if(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]+a[10]+a[11]+a[12]==13)
{
count++;
result=count;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
cout<<count<<endl;
return 0;
}

运行结果:

心路历程:

做这道题的时候由于时间很紧了,加上已经精力高度集中很长时间,感觉很不在状态,一下子就被题目给唬住了,然后就是在各种类似”点数“,”花色“,“牌色”之类的词语上面徘徊,不明所以,就没有认真做这道其实很easy的题目,考完之后一想,觉得挺后悔的,当时其实我也考虑了用循环的办法,但是当时已经被“点数”,“牌色”之类的彻底搞晕了,并且绝对不相信13层循环居然只用4秒就运行出来了,于是就没有做这很简单一道题,如果当初认真把这道题思考一下,理清思路,说不定就做出来拿二等奖了




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: