回溯法
文章平均质量分 80
雪山飞狐YCH
ACM爱好者
展开
-
全排列
描述:输入一个正整数N(N 输入: 每组测试数据位一个小于等于10的整数,0表示输入结束。 输出: 输出全排列。 样例输入: 4 3 0 样例输出: 1 2 3 41 2 4 31 3 2 41 3 4 21 4 2 31 4 3 22 1 3 42 1 4 32 3 1 42 3 4 12 4 1 32 4 3 13 1 2 43 1 4 23 2 1 43 2 4 13 4原创 2012-12-05 16:38:50 · 383 阅读 · 0 评论 -
困难的串
描述:编写程序,产生由7,8,9这3个数字符号所构成、长度为n的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串; 输入为字符串长度n;输出为无相邻重复子串的所有字符串,每个字符串换行输出。 Sample Input: Please input string length n: 5(回车)Sample Output:原创 2013-05-04 20:35:45 · 1148 阅读 · 0 评论 -
子集生成方法
给出一个不含重复元素的集合,求得其子集的各种情况并输出! 方法一:增量构造法 思路是一次选出一个元素放到集合中去,程序如下:代码:#include#define N 100int p[N+2],num[N+2];int cmp(const void *a, const void *b) { return *(int *)a-*(int *原创 2013-03-28 12:08:40 · 844 阅读 · 0 评论 -
图的着色问题-回溯法
问题描述:给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中每条边的2个顶点着不同颜色。这个问题是图的m可着色判定问题。若一个图最少需要m种颜色才能使图中每条边连接的2个顶点着不同颜色,则称这个数m为该图的色数。求一个图的色数m的问题称为图的m可着色优化问题。输入:无向图,m输出:如果能,则输出方案 算法: t=1原创 2013-03-04 08:56:49 · 1129 阅读 · 0 评论 -
跳马问题-回溯法
题目大意:在n×m棋盘上有一中国象棋中的马:马走日字;马只能往右走。 请你找出一条可行路径,使得马可以从棋盘的左上角走到右下角。输入:9 5/*棋盘规模*/ 1/*测试次数*/ 0 0 8 4/*位置按照矩阵的下标而写*/输出:(0,0)->(2,1)->(4,2)->(6,3)->(8,4)分析:深度优先搜原创 2013-03-04 08:49:32 · 8162 阅读 · 2 评论 -
算24点-回溯法
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1267【问题描述】 几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为“算24点”。您作为游戏者将得到4个1~9之间的自然数作为操作数,而您的任务是对这4个操作数进行适当的算术运算,要求运算结果原创 2013-03-05 17:04:03 · 6510 阅读 · 1 评论 -
困难的串-回溯法
题目大意:如果一个字符串包含两个相邻的重复子串,则称它是容易的串,其他串称为“困难的串”。例如:BB,ABCDACABCAB吗,ABCDSABCD都是容易的串,而D,DC,ABDAB,CBABCBA都是困难的。本例要求输入困难串的长度,输出由7、8、9组成的困难的串例如输入:3输出:787789797798878879897898978979原创 2013-03-03 22:31:25 · 1960 阅读 · 0 评论 -
八皇后问题
题意: 在8*8国际象棋棋盘上,要求在每一行放置一个皇后,且能做到在竖方向,斜方向都没有冲突。国际象棋的棋盘如下图所示: 代码:#include#define N 100int c[N],n;void search(int cur){ int i,j,flag; if(cur==n) { for(j=0;j<n;j++原创 2013-03-03 22:13:14 · 587 阅读 · 0 评论 -
南阳理工:素数环
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。 为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。 输入 有多组测试数据,每组输入一个n(0输出 每组第一行输出对应的Case序号,从1开原创 2012-12-05 16:38:53 · 841 阅读 · 0 评论 -
再做蓝桥杯全国软件专业人才设计大赛2012试题
一、 微生物增殖假设有两种微生物 X和 YX出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。如果X=10,Y=90 呢?本题的要求就是写出这两种初始条件下,60分钟后Y的数目。原创 2013-04-06 22:39:55 · 1437 阅读 · 0 评论