回溯/递归
圆溜溜的奶黄包
这个作者很懒,什么都没留下…
展开
-
<C语言>用递归调用函数解决穷举n位二进制数问题
穷举n位二进制数 时限:100ms 内存限制:10000K 总时限:300ms 描述: 输入一个小于20的正整数n,要求按从小到大的顺序输出所有的n位二进制数,每个数占一行。 输入: 输入一个小于20的正整数n。 输出: 按从小到大的顺序输出所有的n位二进制数,每个数占一行。 输入样例: 3 输出样例: 000 001 0原创 2017-10-31 10:55:33 · 1357 阅读 · 1 评论 -
Openjudge:全排列(递归调用)
全排列 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有’a’ < ‘b’ < … < ‘y’ < ‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。 输入 输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1原创 2017-11-30 16:10:24 · 1034 阅读 · 0 评论 -
2的幂次方表示答案及注释(NOIP)
2的幂次方表示 总时间限制: 1000ms 内存限制: 65536kB 描述 任何一个正整数都可以用2的幂次方表示。例如: 137=27+23+20 同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7=22+2+20(21用2表示) 3=2+20原创 2017-11-30 17:37:59 · 4383 阅读 · 1 评论 -
C语言中的求图像周长问题(ZOJ 1047)
描述: 给一个用 . 和X表示的图形,图形在上、下、左、右、左上、左下、右上、右下8个方向都被看作是连通的,并且图像中间不会出现空洞,求这个图形的边长。 输入: 首先给出m、n、x、y四个正整数,下面给出m×n的图形,x、y表示点击的位置,全0表示结束。 输出: 点击的图形的周长。 输入样例: 2 2 2 2 XX XX 6 4 2 3原创 2017-11-04 13:56:52 · 1138 阅读 · 0 评论 -
回溯算法的应用:C语言中的堡垒问题(不要把换行符输到数组里QAQ)
描述 城堡是一个4×4的方格,为了保卫城堡,现需要在某些格子里修建一些堡垒。城堡中的某些格子是墙,其余格子都是空格,堡垒只能建在空格里,每个堡垒都可以向上下左右四个方向射击,如果两个堡垒在同一行或同一列,且中间没有墙相隔,则两个堡垒都会把对方打掉。问对于给定的一种状态,最多能够修建几个堡垒。 输入 每个测例以一个整数n(1<=n<=4)开始,表示城堡的大小。接下来是n行字符每行n个原创 2017-11-03 16:52:47 · 867 阅读 · 0 评论 -
C语言中的数独问题(回溯)
描述: 数独游戏规则 在9阶方阵中,包含了81个小格(九列九行),其中又再分成九个小正方形(称为宫),每宫有九小格。 游戏刚开始时,盘面上有些小格已经填了数字(称为初盘),游戏者要在空白的小格中填入1到9的数字, 使得最后每行、每列、每宫都不出现重复的数字,而且每一个游戏都只有一个唯一的解答(称为终盘)。 输入: 一个9*9的矩阵,0表示该位置是空白。原创 2017-11-02 23:27:29 · 3385 阅读 · 6 评论 -
C语言中的素数环问题(回溯)//函数exit的使用
素数环问题 时限:1000ms 内存限制:10000K 总时限:3000ms 描述: 把1到20这重新排列,使得排列后的序列A满足: a. 任意相邻两个数之和是素数 b. 不存在满足条件a的序列B使得:A和B的前k(0 <= k <= 19)项相同且B的第k+1项比A的第k+1项小。(即按字典序排列的第一项) 输入: 没有输入。 输出: 输出A,原创 2017-10-31 20:35:37 · 713 阅读 · 0 评论 -
C语言中的8皇后问题。
8皇后问题时限:1000ms 内存限制:10000K 总时限:3000ms描述:输出8皇后问题所有结果。输入:没有输入。输出:每个结果第一行是No n:的形式,n表示输出的是第几个结果;下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格。不同的结果中,先输出第一个皇后位置靠前的结果;第一个皇后位置相同,先输出第二个皇后位置靠前的结果;依次类推。原创 2017-10-31 10:22:30 · 621 阅读 · 0 评论 -
C语言通过递归调用函数解决求阶乘和ACKERMAN函数问题
输入整型n(n>=0),输出n!#include<stdio.h>int fac(int n){ int sum; if(n==1||n==0) sum=1; else sum=n*fac(n-1); return sum;}int main(){ int n; scanf("%d",&n); printf("%d",fac(n))原创 2017-10-30 23:27:39 · 3335 阅读 · 0 评论 -
极大极小搜索
极大极小搜索 时限:1000ms 内存限制:10000K 总时限:3000ms 描述: 搜索n层,第一层取最大值,先输入两个整数n、randseed,用randseed设置随机数种子。 搜索时每层4个分支,能不能想这个分支走用函数canmoveto()判断,内容如下: int canmoveto(int m, int dire) { return(r原创 2017-11-23 10:59:53 · 343 阅读 · 0 评论