守望者--AIR技术交流

标题: 编程算法之试探法 [打印本页]

作者: yaoyuan0701    时间: 2015-4-22 22:30
标题: 编程算法之试探法
试探法也称为回溯法,它是一种系统的搜索问题解的方法,该算法设计思想适用范围相当广发,例如 棋手思考下一步走哪里就是采用试探法。

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

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

  1.     // 编程算法之试探法.cpp : 定义控制台应用程序的入口点。  
  2.     //  
  3.       
  4.     #include "stdafx.h"  
  5.       
  6.       
  7.     #define MAXN 7  
  8.     #define NUM 29  
  9.     int num[MAXN];  
  10.     int lottery[MAXN];  
  11.       
  12.     void combine(int n,int m)  
  13.     {  
  14.         for(int i=n;i>=m;--i)  
  15.         {  
  16.             lottery[m-1] = num[i-1];  
  17.             if(m>1)  
  18.                 combine(i-1,m-1);  
  19.             else  
  20.             {  
  21.                 for(int j=MAXN-1;j>=0;--j)  
  22.                 {  
  23.                     printf("%3d",lottery[j]);  
  24.                 }  
  25.                 printf("\n");  
  26.             }  
  27.       
  28.         }  
  29.     }  
  30.       
  31.     int _tmain(int argc, _TCHAR* argv[])  
  32.     {  
  33.         int i;  
  34.         for(i = 0;i<NUM;++i)  
  35.             num[i] = i+1;  
  36.         for(i=0;i<MAXN;++i)  
  37.             lottery[i] = 0;  
  38.         combine(NUM,MAXN);  
  39.         return 0;  
  40.     }  
复制代码







欢迎光临 守望者--AIR技术交流 (http://www.airmyth.com/)