python每个数都可由集合中的某两个数相加而得(这两个数可以相同)

  • 问题表述
  • 思路
  • 代码
  • 运行结果

问题表述

有一个自然数集合,其中最小的数是1,最大的数是100。这个集合中的数除了1之外,每个数都可由集合中的某两个数相加而得(这两个数可以相同)。利用回溯法编写程序,求符合上述条件的、元素个数为10的所有集合。

思路

这个集合中最小数1,最大数为100,为了便于计算,设这个集合是有序的且有小到大排列,max表示当前满足要求的最大数,
n表示还剩需要寻找元素的个数,
‘sum’表示组合的个数,
result表示一个结果集合,令result[0]=1,result[99]=100
当’n==0’,则找到一组满足条件的结果,输出结果,并’sum+1’
当’n>0’,则表明当前在寻找第(10-n)个元素,
从’i=max+1’开始寻找,直到找到i满足条件,将i添加到结果数组中result[10-n]=i
如果i递增到100还不满足条件,则回到上一个元素,n-1,取result[10-n-1]=result[10-n-1] +1,进行回溯

代码

result = ['' for i in range(10)]
N = 100
sum = 0
result[0] = 1
def print_set(result):global sumif result[9]!=N:returnelse:print(result)sum +=1def judge(x,l):for i in range(0,l):for j in range(0,l):if x==result[i]+result[j]:return Truereturn Falsedef fun(max,n):if n>0:for i in range(max+1,N+1):if judge(i,10-n):result[10-n] = imax = result[10-n]fun(max,n-1)else:print_set(result)
fun(1,9)
print(sum)

运行结果

共2215种组合

python每个数都可由集合中的某两个数相加而得相关推荐

  1. java怎么求两组整数的或集_Java面试题(判断集合中是否有两个数的和等于某个给定整数)...

    首先是参考思路: 解法1 解题步骤: 1.        对数组S进行归并排序. 2.        构造数组S'={z : z=x-y, y∈S},并排序.由于S已经有序,构造与排序可一并完成. 3 ...

  2. 求两个数的公约数java_java中怎样求两个数的最大公约数?

    方法一:(辗转相除法) 设用户输入的两个整数为n1和n2且n1>n2,余数=n1%n2.当余数不为0时,把除数赋给n1做被除数,把余数赋给n2做除数再求得新余数,若还不为0再重复知道余数为0,此 ...

  3. 找出1-100中缺失的两个数

    题目: 从1-100这100个数中,抽出两个数,将剩下的98个数排序好放到array[98]的数组中,请问如何求出被抽出的两个数? 思路: 排序好,说明数组中的数是从小到大排序的,那说明如果抽出的是9 ...

  4. 判断无序数组中是否存在两个数之和为m

    题目描述 给定一个长度是n整数的无序序列,然后给定一个整数m,判定是序列中是否有两个数的和是m.注意,数列是无序的,数据可能有重复的. 解题思路 需要利用哈希进行解题,这样保证复杂度是O(n)O(n) ...

  5. 分治法 第1关:求一组数据中最大的两个数

    任务描述 本关任务:利用分治法求一组数据中最大的两个数和最小的两个数. 编程要求 请在右侧编辑器Begin-End处补充代码,完成本关任务. 测试说明 平台会对你编写的代码进行测试,比对你输出的数值与 ...

  6. Java学前训练:鬼谷子随意从2-99中选取了两个数

    题目: 一天,鬼谷子随意从2-99中选取了两个数.他把这两个数的和告诉了庞涓,把这两个数的乘积告诉了孙膑,但孙膑和庞涓彼此不知到对方得到的数. 第二天,庞涓很有自信的对孙膑说:虽然我不知到这两个数是什 ...

  7. Redis 笔记(06)— set 类型(向集合添加元素、获取集合元素个数、判断集合中是否包含某个元素、删除给定元素、返回集合中所有元素、计算集合的交集、并集、差集)

    Redis 的 set 集合内部的键值对是无序的唯一的.它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值 NULL .当集合中最后一个元素移除之后,数据结构自动删除,内存被回收. ...

  8. python输入4个数字_Python中输入任意四个数,输出他们由大到小排序

    Python中输入任意四个数,输出他们由大到小排序 Python中输入任意四个数,输出他们由大到小排序 要方便的那种,谢谢! 第1个回答 2018-11-04 任意输入4个整数,从大到小排列输出.c语 ...

  9. python从1到n整数中1点的个数_Python解决 从1到n整数中1出现的次数

    最近在看<剑指Offer>,面试题32的题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1.10.11和12,1一共出 ...

最新文章

  1. mysql persistent_MySQL关于InnoDB的几个错误
  2. Samtools安装与使用
  3. Mac 安装md5sum等
  4. 史上最纯洁的女孩,看到我实在被雷到了。
  5. sc delete:指定的服务已经标记为删除
  6. 应用篇——SSL/TLS
  7. 如何使用python爬取百度图片_【Python】爬取百度图片进行人脸识别
  8. 通过composer安装阿里大于接口扩展
  9. 常用html字符的转义字符串(html代码),全部转义字符备用
  10. 移动端js事件-了解
  11. 美柚-产品原型图(高保真) 一个拥有腾讯产品梦的小精灵
  12. amazon linux ami root 密码,Ubuntu Server的Amazon AMI映像的默认用户名是什么?
  13. YAF 菜鸟的学习笔记
  14. ubuntu 安装 teamViewer 出现错误
  15. html嵌入flv格式和swf格式视频
  16. 儿童“益”站线上课堂 战“疫”不停学
  17. IT,互联网,科技,技术博客网站推荐
  18. wince 德赛西威2413_德赛西威NAV230凯立德2016春季专版C2134-C7M07-3921J0S
  19. 前端实战:教你写出简单的侧边栏功能以及返回顶部特效
  20. 交易系统架构演进之路(二):2.0版

热门文章

  1. torch.Linear(input_size,output_size, bia = True/Flase)
  2. android id 重名_android 中Xml里面的id重名问题
  3. 计算机的智能计算方向,多媒体与智能计算研究方向
  4. 【笨木头Unity】入门之旅002:不谈对象,咱们谈组件
  5. AutoCAD Civil 3D-超高及数据编辑输入
  6. 计算机专业简历的自我介绍,计算机专业简历自我介绍范文 .docx
  7. ionic+vue+capacitor系列笔记--03项目使用Native插件
  8. 2017年英语专升本英语阅读「Part II 阅读专区」【文章(图片)、答案、词汇记忆】
  9. vue cli 接入 mock
  10. 【51单片机】室友用一把王者时间,学会了去使用数码管。