// DFS.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "iostream"
#include "vector"
#include "stack"
using namespace std;
vector<int> vec;
void DFS(int num);
void DFS2(int num, int * times, int sum, int k);
const int DIANSHU = 6;
int _tmain(int argc, _TCHAR* argv[])
{
//DFS(3, 0);
int num = 4;
//DFS(num);
int min = 1 * num;
int max = DIANSHU * num;
int * times = new int[max - min + 1];
for(int i = min; i <=max; i++)
times[i - min] = 0;
DFS2(num, times, 0, 0);
for(int i = min; i <= max; i++)
printf("%5d, %5d \n", i, times[i - min]);
system("pause");
return 0;
}
void DFS2(int num, int * times, int sum, int k)
{
if(k == num)
{
times[sum - 1 * num]++;
return;
}
for(int i = 1; i <= DIANSHU; i++)
{
DFS2(num, times, sum + i, k + 1);
}
}
void DFS(int num)
{
if(vec.size() == num)
{
for(int i = 0; i < vec.size(); i++)
printf("%3d", vec[i]);
cout<<endl;
return;
}
for(int i = 1; i <= DIANSHU; i++)
{
vec.push_back(i);
DFS(num);
vec.pop_back();
}
}
骰子求和问题
最新推荐文章于 2020-08-06 11:37:40 发布