试探算法

原创 2018年04月15日 21:51:04

枚举方法

#include<stdio.h>
int main(void){
	int i[7],j;
	for(i[0]=1;i[0]<=29;i[0]++){
		for(i[1]=1;i[1]<=29;i[1]++){
			if(i[0]==i[1])	continue;
			for(i[2]=1;i[2]<=29;i[2]++){
				if(i[0]==i[2]||i[1]==i[2])	continue;
				for(i[3]=1;i[3]<=29;i[3]++){
					if(i[0]==i[3]||i[1]==i[3]||i[2]==i[3])	continue;
					for(i[4]=1;i[4]<=29;i[4]++){
						if(i[0]==i[4]||i[1]==i[4]||i[2]==i[4]||i[3]==i[4]) continue;
						for(i[5]=1;i[5]<=29;i[5]++){
							if(i[0]==i[5]||i[1]==i[5]||
							i[2]==i[5]||i[3]==i[5]||i[4]==i[5]) continue;
							for(i[6]=1;i[6]<=29;i[6]++){
								if(i[0]==i[6]||i[1]==i[6]||
								i[2]==i[6]||i[3]==i[6]||i[4]==i[6]||i[5]==i[6]) continue;
								for(j=0;j<7;j++){
									printf("%3d",i[j]);
								}	
								printf("\n");
								getchar();
							}	
						}
					}
				}
			}
		}
	}
	return 0;
}

试探算法

#include <stdio.h>
#define MAXN 7//设置每一注彩票的位数 
#define NUM 29//设置组成彩票的位数  
int num[NUM];
int lottery[MAXN];
void combine(int n,int m){
	int i,j;
	for(i=n;i>=m;i--){
		lottery[m-1]=num[i-1];//保存一位数 
		if(m>1)
			combine(i-1,m-1);
		else{
			for(j=MAXN-1;j>=0;j--)
				printf("%3d",lottery[j]);
			//getchar();
			printf("\n");
		}
	}
} 
int main(void){
	int i,j;
	for(i=0;i<NUM;i++)
		num[i]=i+1;
	for(i=0;i<MAXN;i++)
		lottery[i]=0;
	combine(NUM,MAXN);
	//getchar();
	return 0;
}


算法思想篇(6)————试探算法

使用试探算法解题的基本步骤如下所示。 (1)针对所给问题,定义问题的解空间; (2)确定易于搜索的解空间结构; (3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。 试探法为...
  • L979951191
  • L979951191
  • 2015-08-14 11:30:47
  • 531

递归与试探回溯(1) 简单递归分析

递归分析往往是新手在学习数据结构是难点,见到递归就头大。网上看了诸多总结,千变万化,其实都不如自己从头到尾分析一下。在这一个章节,我就先不对递归的渐进复杂度和空间复杂度做分析,因为我实在没有完全搞懂。...
  • zyhmz
  • zyhmz
  • 2017-02-21 12:00:59
  • 410

基础算法(八) --- 试探法

摸到石头过河,从实践中出真知,这是试探法的原理。从学过的有关知识和规律,从自己的体会,找出相关的进行试探。如果能找出其中一个解,那么也就代表试探初步成功了。请注意初步成功的解也许并非是最优的那个解,但...
  • listening2009
  • listening2009
  • 2013-01-05 11:05:09
  • 1438

C语言入门的几道算法题目,非常适合初学者的你

  • 2008年11月16日 20:04
  • 2KB
  • 下载

算法:回溯(试探)算法

定义为求得问题的解,先选择某一种可能情况进行试探,在试探过程中,一旦发现原来选择的假设情况是错误的,就退回一步重新选择,继续向前试探,如此反复进行,直至得到解或者证明无解。 对解集合中的各解进行试探 ...
  • Bingsman
  • Bingsman
  • 2016-07-26 10:55:57
  • 126

第九章·词典

第九章·词典散列:原理散列是一种赖以高效组织数据并实现相关算法的重要思想。这种思想背后的原理却很直观、简单。...
  • xiang_freedom
  • xiang_freedom
  • 2016-04-12 02:52:27
  • 1201

回溯算法的一些案例分析(c代码实现)

回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。用回溯算法解决问题的一般步骤为: 1、定义一个解空间,它包含问题的...
  • u010442328
  • u010442328
  • 2015-07-20 13:59:45
  • 512

经典问题-老鼠走迷宫问题求解

问题: 现在有一个使用二维矩阵阵列表示的迷宫,矩阵使用数字1表示道路,2表示障碍物(如墙壁)。 指定迷宫入口和出口的二维坐标位置,寻找一个通过迷宫的路径。 解决思路: 指定前进时探索的方向顺序,比如先...
  • HeYingShu
  • HeYingShu
  • 2015-01-14 15:20:59
  • 685

回溯算法讲解

回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。当发现当前候选解不可能是解时,就选择下一 个候选解;倘若当前候选解除了还不满足问题规模要求外,满...
  • u011225629
  • u011225629
  • 2015-08-15 14:30:23
  • 2409

比较各种装箱试探方法实现文件C语言

/* 10-5-11-01-11-21.47.c -- 第十章第五题 */ #include "Uiversal_queue.h" typedef struct data { int t...
  • Golden_Shadow
  • Golden_Shadow
  • 2011-01-21 01:28:00
  • 913
收藏助手
不良信息举报
您举报文章:试探算法
举报原因:
原因补充:

(最多只允许输入30个字)