回溯法应用
2015-08-09 16:04
211 查看
题目
笔试的时候遇到这么一个问题:6 = 1+1 +1+ 1+ 1 +1
6 = 1+ 1+ 1+ 1+ 2
6 = 1+ 1+ 1+ 3
6 = 1+ 1+ 2+ 2
6 = 1+ 1+ 4
6 = 1+ 2+ 3
6 = 1+ 5
6 = 2+ 2+ 2
6 = 2+ 4
6 = 3+ 3
6 = 6
就这样,给定一个数,打印出这种形式
分析
递归,回溯。代码
[code]#include<iostream> #include<vector> using namespace std; void print(int n, vector<int> &re){ if(n < 0) return; if(n == 0){ for(auto i : re){ cout << i << " "; } cout << endl; } else{ int start = 1; int length = re.size(); if(length != 0) start = re.at(length - 1); for(int i = start; i <= n; i++){ re.push_back(i); print(n - i, re); re.pop_back(); } } } int main(){ vector<int> re; print(6, re); return 0; }
相关文章推荐
- Avoid The Lakes
- PowerDesigner中列表显示TABLE的NAME而不是CODE
- 答读者问(5):关于数学程序猿的作用、r \\ u0026研发工作的实践要求和问题,如求职的影响
- 第19章 网络通信----UDP程序设计基础
- 【3】数字数组中只出现一次
- 打开系统设置界面
- Seeding
- activity启动模式区别和优化
- 控制线程顺序执行
- 面试准备--java垃圾回收机制、内存管理
- 音乐盒录像带第二版之注册并取得ControllerEvent方法
- C++ 几种排序算法
- android jni 调用结构体示例
- RunLoop学习笔记
- NOJ2098 3_A+B(III)(大数加法)
- PowerDesigner中Name与Code同步的问题
- 二叉树之打印二叉树两节点路径
- 第23章 尝试互联网(2)
- uva10375 Choose and Divide(唯一分解定理)
- 模拟-FZU-2150-Fire Game