试探法也称为回溯法,它是一种系统的搜索问题解的方法,该算法设计思想适用范围相当广发,例如 棋手思考下一步走哪里就是采用试探法。
试探法的基本思路是:从问题的某一种状态出发,搜索从这种状态出发所能达到所有的状态,当一条路走到尽头时候,先退几步,接着从另一种可能的状态出发,继续搜索,直到所有的路径都尝试过。
常见的彩票组合号码都是由一些数字组成的,生产彩票号码其实就是将所有数字进行不同的组合。
// 编程算法之试探法.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#define MAXN 7
#define NUM 29
int num[MAXN];
int lottery[MAXN];
void combine(int n,int m)
{
for(int i=n;i>=m;--i)
{
lottery[m-1] = num[i-1];
if(m>1)
combine(i-1,m-1);
else
{
for(int j=MAXN-1;j>=0;--j)
{
printf("%3d",lottery[j]);
}
printf("\n");
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int i;
for(i = 0;i<NUM;++i)
num[i] = i+1;
for(i=0;i<MAXN;++i)
lottery[i] = 0;
combine(NUM,MAXN);
return 0;
}