专用主机方式建设网站,免费公司建站,时尚wordpress免费主题下载,在线生成app网站源码题目描述
小明被劫持到X赌城#xff0c;被迫与其他3人玩牌。 一副扑克牌#xff08;去掉大小王牌#xff0c;共52张#xff09;#xff0c;均匀发给4个人#xff0c;每个人13张。 这时#xff0c;小明脑子里突然冒出一个问题#xff1a; 如果不考虑花色#xff0c;只…题目描述
小明被劫持到X赌城被迫与其他3人玩牌。 一副扑克牌去掉大小王牌共52张均匀发给4个人每个人13张。 这时小明脑子里突然冒出一个问题 如果不考虑花色只考虑点数也不考虑自己得到的牌的先后顺序 自己手里能拿到的初始牌型组合一共有多少种呢
输出
请输出该整数不要输出任何多余的内容或说明文字。
解题思路: 模拟发牌的过程。
dfs代码如下
#include iostream
using namespace std;
int sum 0, ans 0;//sum表示手上的牌有几张
void dfs(int n) {//n表示牌的种类if (sum 13) {return ;}if (n 14) {if (sum 13) {ans;}} elsefor (int i 0; i 5; i) {sum i;dfs(n 1);sum - i;}
}int main() {dfs(1);cout ans endl;return 0;
}#include iostream
using namespace std;
int ans;
//u为种类sum为手上牌的数量
void dfs(int u, int sum) {if (sum 13)return ;if (u 14) {if (sum 13) {ans;return ;}return ;}for (int i 0; i 4; i) {sum i;dfs(u 1, sum);sum - i;}
}int main() {dfs(1, 0);cout ans endl;return 0;
}暴力枚举代码如下
#include iostream
using namespace std;int main() {int ans 0;for (int i1 0; i1 5; i1)for (int i2 0; i2 5; i2)for (int i3 0; i3 5; i3)for (int i4 0; i4 5; i4)for (int i5 0; i5 5; i5)for (int i6 0; i6 5; i6)for (int i7 0; i7 5; i7)for (int i8 0; i8 5; i8)for (int i9 0; i9 5; i9)for (int i10 0; i10 5; i10)for (int i11 0; i11 5; i11)for (int i12 0; i12 5; i12)for (int i13 0; i13 5; i13) {if (i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13 13) {ans;}}cout ans endl;return 0;
}