![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
暴力求解法
JanFangZ
坚持,坚持就好了!
展开
-
暴力求解法_隐式图搜索(埃及分数,倒水问题,八数码问题)
隐式图搜索题目:输入:输出:code:隐式数的遍历埃及分数题目:使用单位分数的和(如1/a,a是自然数)表示一切有理数。例如2/3 = 1/2 + 1/6,但不允许2/3 = 1/3 + 1/3,因为在加数中不允许有相同的。对于一个分数a/b,表示方法有很多种,其中加数少的比加数多的号,如果加数个数相同,则最小的分数越大越好。例如,19/45 = 1/5 + 1/6 + 1/18是最优方案。输入整数原创 2017-08-08 11:31:46 · 463 阅读 · 0 评论 -
暴力求解法_隐式图搜索(八数码问题)
八数码问题题目:编号为1~8的8个正方形被摆成3行3列(由一个格子留空),每次可以把与空格相邻的滑块(有公共边相邻才算)移到空格,而它原来的位置就成为了新的空格。给定初始局面和目标局面(用0表示空格),你的任务是计算出最少移动步数。如果无法达到,则输出-1。输入:2 6 4 1 3 7 0 5 88 1 5 7 3 6 4 0 2输出:31映射(编码和解码)第一种方法:把排列“变成”整数,然后原创 2017-08-09 19:16:53 · 468 阅读 · 0 评论 -
暴力求解法_回溯法(八皇后问题,素数环,困难的串)
回溯法素数环题目:输入整数n,把整数1,2,3…,n组成一个环,使得相邻的整数之和为素数。输出时从整数n开始逆时针输出排列。同一个环应该恰好输出一次。输入:6输出:1 4 3 2 5 6 1 6 5 2 3 4 首先回顾素数的判断,将每个数循环一遍判断是否为素数,如果为素数就在标记数组isp对应的位置输出1,如果不是则为0。接着是打印过程,以cur==n && isp[A[0]+A[n-1]]原创 2017-08-08 09:37:37 · 442 阅读 · 0 评论 -
暴力求解法_子集生成(增量构造法,位向量法,二进制法)
子集生成子集生成算法:给定一个一级和,枚举它的所有可能的子集。输入:4输出:增量构造法第一种思路是一次选出一个元素放到集合中code:#include <stdio.h>int A[1010];void print_subset(int n,int* A,int cur){ int flag=0; for(int i=0;i<cur;i++)//打印当前集合 {原创 2017-08-07 16:04:47 · 485 阅读 · 0 评论 -
暴力求解法_枚举排列(生成1~n 的排列,生成可重集的排列,下一个排列)
枚举排列生成1~n 的排列题目:输入整数n,按字典从小到大的顺序输出前n个数的所有排列。两个序列的大小关系等价于从头开始第一个不相同位置处的大小关系。输入:3输出:(1 2 3)(1 3 2)(2 1 3)(2 3 1)(3 1 2)(3 2 1)code:#include <stdio.h>int A[1001];void print_permutation(int n,int原创 2017-08-07 10:31:14 · 689 阅读 · 0 评论 -
暴力求解法_简单枚举(除法,最大乘积法,分数拆分,双基回文数)
简单枚举1 除法题目:输入正整数n,按从小到大输出所有形如abcde/fghij=n的表达式。其中a~j为0~9的一个排列,2=输入:62输出:79546/01283=6294736/01528=62code:#include <stdio.h>#include<string.h>int main() { int i,j,n,s1,s2,flag[10]; while(sc原创 2017-08-06 19:48:22 · 665 阅读 · 0 评论