python每个数都可由集合中的某两个数相加而得
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每个数都可由集合中的某两个数相加而得相关推荐
- java怎么求两组整数的或集_Java面试题(判断集合中是否有两个数的和等于某个给定整数)...
首先是参考思路: 解法1 解题步骤: 1. 对数组S进行归并排序. 2. 构造数组S'={z : z=x-y, y∈S},并排序.由于S已经有序,构造与排序可一并完成. 3 ...
- 求两个数的公约数java_java中怎样求两个数的最大公约数?
方法一:(辗转相除法) 设用户输入的两个整数为n1和n2且n1>n2,余数=n1%n2.当余数不为0时,把除数赋给n1做被除数,把余数赋给n2做除数再求得新余数,若还不为0再重复知道余数为0,此 ...
- 找出1-100中缺失的两个数
题目: 从1-100这100个数中,抽出两个数,将剩下的98个数排序好放到array[98]的数组中,请问如何求出被抽出的两个数? 思路: 排序好,说明数组中的数是从小到大排序的,那说明如果抽出的是9 ...
- 判断无序数组中是否存在两个数之和为m
题目描述 给定一个长度是n整数的无序序列,然后给定一个整数m,判定是序列中是否有两个数的和是m.注意,数列是无序的,数据可能有重复的. 解题思路 需要利用哈希进行解题,这样保证复杂度是O(n)O(n) ...
- 分治法 第1关:求一组数据中最大的两个数
任务描述 本关任务:利用分治法求一组数据中最大的两个数和最小的两个数. 编程要求 请在右侧编辑器Begin-End处补充代码,完成本关任务. 测试说明 平台会对你编写的代码进行测试,比对你输出的数值与 ...
- Java学前训练:鬼谷子随意从2-99中选取了两个数
题目: 一天,鬼谷子随意从2-99中选取了两个数.他把这两个数的和告诉了庞涓,把这两个数的乘积告诉了孙膑,但孙膑和庞涓彼此不知到对方得到的数. 第二天,庞涓很有自信的对孙膑说:虽然我不知到这两个数是什 ...
- Redis 笔记(06)— set 类型(向集合添加元素、获取集合元素个数、判断集合中是否包含某个元素、删除给定元素、返回集合中所有元素、计算集合的交集、并集、差集)
Redis 的 set 集合内部的键值对是无序的唯一的.它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值 NULL .当集合中最后一个元素移除之后,数据结构自动删除,内存被回收. ...
- python输入4个数字_Python中输入任意四个数,输出他们由大到小排序
Python中输入任意四个数,输出他们由大到小排序 Python中输入任意四个数,输出他们由大到小排序 要方便的那种,谢谢! 第1个回答 2018-11-04 任意输入4个整数,从大到小排列输出.c语 ...
- python从1到n整数中1点的个数_Python解决 从1到n整数中1出现的次数
最近在看<剑指Offer>,面试题32的题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1.10.11和12,1一共出 ...
最新文章
- mysql persistent_MySQL关于InnoDB的几个错误
- Samtools安装与使用
- Mac 安装md5sum等
- 史上最纯洁的女孩,看到我实在被雷到了。
- sc delete:指定的服务已经标记为删除
- 应用篇——SSL/TLS
- 如何使用python爬取百度图片_【Python】爬取百度图片进行人脸识别
- 通过composer安装阿里大于接口扩展
- 常用html字符的转义字符串(html代码),全部转义字符备用
- 移动端js事件-了解
- 美柚-产品原型图(高保真) 一个拥有腾讯产品梦的小精灵
- amazon linux ami root 密码,Ubuntu Server的Amazon AMI映像的默认用户名是什么?
- YAF 菜鸟的学习笔记
- ubuntu 安装 teamViewer 出现错误
- html嵌入flv格式和swf格式视频
- 儿童“益”站线上课堂 战“疫”不停学
- IT,互联网,科技,技术博客网站推荐
- wince 德赛西威2413_德赛西威NAV230凯立德2016春季专版C2134-C7M07-3921J0S
- 前端实战:教你写出简单的侧边栏功能以及返回顶部特效
- 交易系统架构演进之路(二):2.0版
热门文章
- torch.Linear(input_size,output_size, bia = True/Flase)
- android id 重名_android 中Xml里面的id重名问题
- 计算机的智能计算方向,多媒体与智能计算研究方向
- 【笨木头Unity】入门之旅002:不谈对象,咱们谈组件
- AutoCAD Civil 3D-超高及数据编辑输入
- 计算机专业简历的自我介绍,计算机专业简历自我介绍范文 .docx
- ionic+vue+capacitor系列笔记--03项目使用Native插件
- 2017年英语专升本英语阅读「Part II 阅读专区」【文章(图片)、答案、词汇记忆】
- vue cli 接入 mock
- 【51单片机】室友用一把王者时间,学会了去使用数码管。