C++版暴力回溯法(牌型种类)

问题描述:

手上13张牌,不考虑花色、得牌先后顺序、只考虑点数。自己手里能拿到的初始牌型组合一共多少种。

A,2,3,4,...,10,J,Q,K每个元素有0,1,2,3,4五种情况。这些元素和为13即可。


求解思路:

int sum 记录手上牌的总数

int cur 来遍历依次所有牌型


C++代码:

#include<iostream>

using namespace std;

int sum = 0;

int cnt = 0;

void dfs(int cur) {

if (sum > 13) return;

if (cur == 13) {

if (sum == 13)

cnt++;

return;

}

else {

for (int i = 0; i < 5; i++) {

sum += i;

dfs(cur + 1);

sum -= i;

}

}

}

int main() {

dfs(0);

cout << cnt << endl;

return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容