算法-求和为N的子序列
来源:互联网 发布:网络债券投资 编辑:程序博客网 时间:2024/06/07 05:21
给定正整数N,求1-N中和为N的自序列,如
输入:N=10
输出:
1 2 3 4
1 2 7
1 3 6
1 4 5
1 9
2 3 5
2 8
3 7
4 6
10
算法:DFS+剪枝
#include "stdafx.h"#include<iostream>#include<vector>using namespace std;vector<vector<int>> results;void Dfs(int n,vector<bool> &used,vector<int> &result,int sum,int curI){ if (sum > n) return; if (sum == n) { results.push_back(result); return; } for (int i = curI; i <= n; ++i) { if (!used[i]) { if (sum + i <= n) { used[i] = true; result.push_back(i); Dfs(n, used, result, sum + i, i+1); used[i] = false; result.pop_back(); } } }}int main(){ int n; while (cin >> n) { results.clear(); vector<bool> used(n + 1, false); vector<int> result; Dfs(n, used, result, 0,1); for (int i = 0; i < results.size(); ++i) { for (int j = 0; j < results[i].size(); ++j) { cout << results[i][j] << " "; } cout << endl; } } return 0;}
阅读全文
0 0
- 算法-求和为N的子序列
- 算法 - 求和为n的连续正整数序列(C++)
- 常用算法-子序列求和
- 和为n的连续子序列
- python 求和为正整数n的连续整数序列
- 数据结构和算法学习系列之最大子序列求和问题的O(N)时间复杂度
- 时间复杂度为O(N)的求最大子序列和的算法
- coding - 求和为n连续正数序列
- 将求最长子序列的算法由O(n²)改进为O(n).
- 算法之最大子序列求和
- 最长上升子序列的N*logN算法
- 最长不下降子序列的O(n*logn)算法
- poj 3903 最长上升子序列,nlog(n)的算法
- 最大连续子序列和的O(n)算法
- 最长不下降子序列的O(n)算法
- 最长递增子序列的nlog(n)算法
- 求和最接近整个序列和的一半的子序列,是个标准的子序列问题,不过不知道O(N^2)是不是最优的
- 求和为n连续正数序列 C++实现
- 10、vue2.0中如何使用better-scroll
- Go语言选择语句
- qt编译源码的配置参数(包含tslib)
- 文档型数据库mongodb介绍2-副本集
- QmlCanvas文字
- 算法-求和为N的子序列
- ajax的学习
- spark小应用二:分组分数排序(SCALA)
- 11.2工作笔记
- 欢迎使用CSDN-markdown编辑器
- 缺数据玩不转机器学习?这里有一份超实用爬虫攻略
- 浅谈TCP/IP模型之传输层
- 数据结构中栈的相关操作
- AIOps核心任务:任务机器人在金融领域中的落地(附文件下载)