n个数的排列问题(回溯法)
来源:互联网 发布:三个字网络流行语 编辑:程序博客网 时间:2024/06/06 05:49
题目:
类似符号三角形问题,可以这样设计范例:
n个数的排列问题或者叫数字三角形问题,或者自己起个名字:已知n个数,第一行是n个数,n个数组成的数字三角形,如图所示。
5 8 6 5 6 8
3 -2 或者 1 2
5 1
下面的数字是上面两个数字的差。求整个三角形的数字之和最大的方案。
这个问题类似符号三角形问题,但是符号三角形问题是子集树,该问题是排列树。
可以自己将+,-号换成其他符号,设计一个新的问题。
代码:
#include<bits/stdc++.h>using namespace std;int perm[11],pos,n,a[11],dp[11][11],bestv;bool mapp[11]= {0};void perm1(int pos,int n){ if(pos==n+1) //这个if可以进行与本题有关的其他操作 { for(int j=1; j<=n; j++) dp[1][j]=perm[j]; for(int i=2; i<=n; i++) for(int j=1; j<=n-i+1; j++) dp[i][j]=dp[i-1][j]+dp[i-1][j+1]; bestv=max(bestv,dp[n][1]); } for(int i=1; i<=n; i++) { if(!mapp[a[i]]) { mapp[a[i]]=true; perm[pos]=a[i]; perm1(pos+1,n); mapp[a[i]]=false; } }}int main(){ cin>>n; for(int i=1; i<=n; i++) cin>>a[i]; bestv=0; perm1(1,n); cout<<bestv<<endl; return 0;}
阅读全文
0 0
- n个数的排列问题(回溯法)
- 回溯之n元素数组取r个数的排列
- 用回溯法找出 n 个自然数中取 r 个数的全排列
- n个数的全排列C语言递归 (回溯)back-tracking
- 实验1——N皇后问题的求可行解个数(回溯法)
- n个数的排列
- n皇后问题的两种方法:常规的回溯法和利用全排列的回溯法
- N个数全排列问题
- 回溯法-排列树 解决N后问题
- N皇后问题(回溯VS全排列)
- 递归回溯 求N个数的全排列 及 next_permutation的使用
- 回溯法搜索排列树的问题
- n个数的全排列的相关问题
- 回溯法:输出n的全排列,解哈密顿问题,马的遍历问题,解八后问题
- n个数的全排列
- N个数的全排列
- n个数的全排列
- N个数的全排列
- g++基本用法
- Vue2 封装的 Quill 富文本编辑器组件 Vue-Quill-Editor
- 面试问题总结
- 【项目实战】---统计逗号隔开的字符串的数量
- Github账号怎么添加SSH keys
- n个数的排列问题(回溯法)
- 从简入难makefile文件编写,Linux C++编程,简单vi命令
- wxPython多个窗口的基本结构
- 泛型dao
- POJ3045 Cow Acrobats 贪心
- chrome控制台的使用
- 深度学习(Deep Learning)
- SpringBoot特性之Actuator
- 【模块学习】关于磁力计HMC5883L型号探索