print all unique solution to split number n

print all unique solution to split number n, given choice of 1 3 5 10
for example if n is 4
{1, 1, 1, 1}
{1, 3}

思路:用DFS肯定可以求解,但需要遍历所有可能,进行剪纸之后用递推实现。主要剪枝思想,后一个数一定要大于等于前一个数

  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. vector<vector<int> > res;
  5. vector<int> cur;
  6. void getAllPath(vector<int> &base,int last,int n){
  7. if(n==0) {
  8. res.push_back(cur);
  9. return;
  10. }
  11. for(int i=0;i<base.size();i++) {
  12. if(base[i]>n) return;
  13. if(base[i]<last) continue;
  14. cur.push_back(base[i]);
  15. getAllPath(base,base[i],n-base[i]);
  16. cur.pop_back();
  17. }
  18. }
  19. int main() {
  20. vector<int> base(4);
  21. base[0] = 1;
  22. base[1] = 3;
  23. base[2] = 5;
  24. base[3] = 10;
  25. getAllPath(base,0,8);
  26. for(int i=0;i<res.size();i++) {
  27. for(int j=0;j<res[i].size();j++) {
  28. cout<<res[i][j]<<"\t";
  29. }
  30. cout<<endl;
  31. }
  32. return 0;
  33. }
时间: 2024-11-03 16:30:41

print all unique solution to split number n的相关文章

LeetCode- Count Numbers with Unique Digits

Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n. Example: Given n = 2, return 91. (The answer should be the total numbers in the range of 0 ≤ x < 100, excluding [11,22,33,44,55,66,77,88,99]) Analysis: A num

357. Count Numbers with Unique Digits 用唯一的数字计算数字

Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n. Example: Given n = 2, return 91. (The answer should be the total numbers in the range of 0 ≤ x < 100, excluding [11,22,33,44,55,66,77,88,99]) Credits:Special

通过PRINT过程制作报表

通过PRINT过程制作报表 PRINT过程是SAS中用于输出数据集内容的最简单常用的过程,它可将选择的观测和字段以简单的矩形表格形式输出. 1.1 制作简单报表 使用PRINT过程最简单的语法形式如下: PROC PRINT <DATA=数据集>; RUN; 当选项DATA=被省略时,系统默认输出最新创建的数据集.为了保证代码的清晰易读,不建议省略.也可以使用数据文件地址和全称来代替数据集. 数据集ex.sales_quater1代表某公司2012年第一季度的销售数 据,Emp_ID代表员工I

python: 字符串按空格分成列表split与加密密码maketrans

#字符串按空格分成列表split() print("fu li mei".split()) #split按空格分成列表 print("1+a+2+b".split('+')) #split按空格分成列表#应用场景--只提取数字 #加密密码 p=str.maketrans("hgx",'123') print("zhangsan xing".translate(p))

projecteuler----&gt;problem=12----Highly divisible triangular number

title: The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... Let us list the factors of

lua字符串分割 string.split实现

function Split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSpli

Python进阶---python strip() split()函数实战(转)

先看一个例子: >>> ipaddr = 10.122.19.10 File "", line 1 ipaddr = 10.122.19.10 ^ SyntaxError: invalid syntax >>> ipaddr = "10.122.19.10" >>> ipaddr.strip() '10.122.19.10' >>> ipaddr = '10.122.19.10' >>

python中split()和split(&#39; &#39;)的区别

总结:split()的时候,多个空格当成一个空格:split(' ')的时候,多个空格也要分割,会分割出来空. 例1: 牛客网:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,"student. a am I".后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是"I am a student.".Cat对一一的翻转这些单词顺序可

前两篇转载别人的精彩文章,自己也总结一下python split的用法吧!

前言:前两篇转载别人的精彩文章,自己也总结一下吧! 最近又开始用起py,是为什么呢? 自己要做一个文本相似度匹配程序,大致思路就是两个文档,一个是试题,一个是材料,我将试题按每题分割出来,再将每题的内容与材料中进行文本相似度匹配. 所以先首先要做的是将试题把每道题作为一个字符串切割开来,存放到字典中. 程序入下: # -*- coding:utf-8 -*- import re #正则模块 f = open('test.txt','r') s = f.read() s1 = s.split('工