编程算法之试探法

试探法也称为回溯法,它是一种系统的搜索问题解的方法,该算法设计思想适用范围相当广发,例如 棋手思考下一步走哪里就是采用试探法。


试探法的基本思路是:从问题的某一种状态出发,搜索从这种状态出发所能达到所有的状态,当一条路走到尽头时候,先退几步,接着从另一种可能的状态出发,继续搜索,直到所有的路径都尝试过。


常见的彩票组合号码都是由一些数字组成的,生产彩票号码其实就是将所有数字进行不同的组合。


// 编程算法之试探法.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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值