-
C 数字排列组合
2020-03-14 15:55:30编辑程序让任意四个数字排列组合并且每一个排列组合的数字都不相同。 结果展示 完整代码 #include <stdio.h> //定义头文件 int main() { int i,j,k; printf("\n"); for(i=1;i<5;i++){ //三重循环 ...编辑程序让任意四个数字排列组合并且每一个排列组合的数字都不相同。
结果展示
完整代码#include <stdio.h> //定义头文件 int main() { int i,j,k; printf("\n"); for(i=1;i<5;i++){ //三重循环 for(j=1;j<5;j++){ for(k=1;k<5;k++){ //确保 i j k 位置不同 if(i!=k&&i!=j!=k){ printf("%d,%d,%d\n",i,j,k); } } } } }
-
python编程100例读出四位数-Python生成0-9任意4位数字组合的方法
2020-10-29 21:58:070-9个数字组成任意4位数字,有多少种排列组合的方式,要是用想的需要不少时间而且还容易出错。用python方法来解决这个问题显然简单得多。只需要一段代码,就可以轻松解决。Python生成四位不重复数字(0-9)的所有组合...玩蛇网本文是关于Python生成0-9任意4位数字组合的方法示例。0-9个数字组成任意4位数字,有多少种排列组合的方式,要是用想的需要不少时间而且还容易出错。用python方法来解决这个问题显然简单得多。只需要一段代码,就可以轻松解决。Python生成四位不重复数字(0-9)的所有组合,要如何操作请往下看。
Python生成0-9任意4位数字组合的方法,Python源代码示例如下:(供参考)
def init_set8(r10=range(10)):
"""
把循环内的range函数提到外面
times5.486 ==> 4.427
"""
ret = []
for i in r10:
for j in r10:
for k in r10:
for l in r10:
if i != j and i != k and i != l and j != k and j != l and k != l:
ret.append((i, j, k, l))
return ret
timing(init_set8, 1000)
def init_set9(r10=range(10)):
"""
for 循环改成列表推导
times5.486 ==>3.773
"""
return [(i, j, k, l)
for i in r10
for j in r10
for k in r10
for l in r10
if ( i != j and i != k and i != l and j != k and j != l and k != l) ]
timing(init_set9, 1000)
def init_set10(r10=range(10)):
return ((i, j, k, l)
for i in r10
for j in r10
for k in r10
for l in r10
if( i != j and i != k and i != l and j != k and j != l and k != l) )
timing(init_set10, 1000)
def init_set11():
"""
用代码的空间代价换取计算P4_4的时间
init_set11 1000 times 7.268 OMG
reduce(lambda x,y:x+y,l)太慢了
"""
c10_4=[( i, j, k, l ) for i in xrange(0, 10)
for j in xrange(i+1, 10)
for k in xrange(j+1, 10)
for l in xrange(k+1, 10) ]
ret=reduce(lambda x,y:x+y,
[ [ (i, j, k, l),
(i, j, l, k),
(i, k, j, l),
(i, k, l, j),
(i, l, j, k),
(i, l, k, j),
(j, i, k, l),
(j, i, l, k),
(j, k, i, l),
(j, k, l, i),
(j, l, i, k),
(j, l, k, i),
(k, i, j, l),
(k, i, l, j),
(k, j, i, l),
(k, j, l, i),
(k, l, i, j),
(k, l, j, i),
(l, i, j, k),
(l, i, k, j),
(l, j, i, k),
(l, j, k, i),
(l, k, i, j),
(l, k, j, i),]
for i, j, k, l in c10_4 ],
)
return ret
def init_set12():
"""
generator是伟大的发明,数据流编程万岁
init_set12 1000 times 1.758
www.iplaypy.com
"""
c10_4=(( i, j, k, l ) for i in xrange(0, 10)
for j in xrange(i+1, 10)
for k in xrange(j+1, 10)
for l in xrange(k+1, 10) )
from itertools import chain
ret=chain(
*( ( (i, j, k, l),
(i, j, l, k),
(i, k, j, l),
(i, k, l, j),
(i, l, j, k),
(i, l, k, j),
(j, i, k, l),
(j, i, l, k),
(j, k, i, l),
(j, k, l, i),
(j, l, i, k),
(j, l, k, i),
(k, i, j, l),
(k, i, l, j),
(k, j, i, l),
(k, j, l, i),
(k, l, i, j),
(k, l, j, i),
(l, i, j, k),
(l, i, k, j),
(l, j, i, k),
(l, j, k, i),
(l, k, i, j),
(l, k, j, i),)
for i, j, k, l in c10_4 )
)
return list(ret)
timing(init_set12, 1000)
玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/algorithm/a2589.html
相关文章 Recommend
-
JS实现的排列组合算法示例
2020-12-10 20:19:55本文实例讲述了JS实现的...举例说明:有 1,2,3,4 四个数字,从这四个数字中,任意选择两个数字一共有多少种情况:[1,2], [1,3], [1,4], [2,3], [2,4], [3,4]一共有这六种情况。 下面用代码实现从5个数字中任意选择3个 -
leetcode 477 汉明距离总和(位运算、排列组合)
2020-10-17 14:34:40两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。 计算一个数组中,任意两个数之间汉明距离的总和。 示例: 输入: 4, 14, 2 输出: 6 解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为...题目描述:
两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。
示例:
输入: 4, 14, 2
输出: 6
解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)
所以答案为:
HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.思路:
按照每一位遍历
求出每一位,0的个数m,1的个数n,因为0和0之间、1和1之间的距离为0 ,只有0和1之间的距离是1,排列组合就是m*n代码如下:
class Solution { public: int totalHammingDistance(vector<int>& nums) { int res=0; int n=nums.size(); for(int i=0;i<32;i++){ int cnt=0; for(int num:nums){ cnt+=(num>>i)&1;//记录1的个数 } res+=cnt*(n-cnt);//排列组合 } return res; } };
-
LeetCode——第十四天(电话号码的字母组合)
2020-04-16 14:53:49给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce...LeetCode——第十四天
17. 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。分析:题目比较简单,直接深度遍历。
代码
class Solution { public: vector<string> table = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; vector<string> letterCombinations(string digits) { vector<string> res; dfs(res,"",digits,0); return res; } void dfs(vector<string> &res,string str,string &digits,int i){ if(i>=digits.size()){ //如果i大于等于输入长度,说明该次遍历结束,把字符串压入res if(str.size()>0)res.push_back(str); return; } else{ string s = table[digits[i]-'2'];//-‘2’是因为table是从0开始,digits则是从2开始,1是空 for(int j=0;j<s.size();j++){//j小于当前数字所在字符数量, str.push_back(s[j]); dfs(res,str,digits,i+1); str.pop_back();//找到之后退出最后一位,继续遍历 } } } };
2.总结
-
LeetCode 17电话号码的字母组合(搜索)&18四数之和
2020-09-01 21:48:59电话号码的字母组合 ...尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 这种问题,明显就是搜索类的问题。你可以使用广度优先搜索bfs,借助一个队列储存字符串进行操作,也可以使用深度优先 -
由1,2,3,4能组成多少个互不相同且无重复数字的三位数?都是多少?(c语言)
2020-12-01 20:58:26思路:首先我们能看到1,2,3,4这四个数字都能作为一个3位数的百位,我们要求能组成的三位数有多少个,就是从这4个数中任意取出三个排列组合,我们定义三个变量i(百位),j(十位),k(个位),用三个for循环来求... -
第十四届浙江财经大学程序设计竞赛 - I-Interesting Set (贪心)
2018-03-27 21:29:56I-Interesting Setpoint:观察可知,只要字符串是0的位置变为1,后面的数字就是一个1、0任意的排列。这样,我们先从后开始找0,找到0,假设他为1,然后算一下有几个排列组合,如果<当前的k。那么k-=这个排列... -
Python秒算24点实现及原理详解
2020-12-31 21:38:11运算符我们需要进行排列组合,因为只有四个数字,所以只需要三个运算符,而且算法符可能会重复,比如三个都是+。 再遍历四个数字的全排列,对每一组数字而言,遍历所有组合的操作符。最后将数字和 -
200个经典C程序【源码】
2013-08-08 10:48:40018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字... -
python基础教程:用Python秒算24点实现及原理详解
2020-12-22 05:27:06这篇文章主要介绍了Python秒算24点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 什么是24点 ...运算符我们需要进行排列组合,因为只有四个数字,所 -
200个经典C程序源码小游戏
2016-05-05 09:44:02018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 ... -
220个C源代码 初学C语言必备
2011-06-21 21:47:54018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字... -
关于C的精粹包含至少200个C语言小程序
2009-01-16 00:42:49018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字... -
[leetcode] 679. 24 Game (Hard)
2018-11-27 09:45:0024点游戏,游戏规则就是利用()、+、-、 *、 /,对四个数字任意运算,可以得出24点则为true。 排列组合问题,最多有A42*A32*A22*4*4*4,也就是12*6*2*4*4=9216种组合方法,于是即使是暴力遍历也不会太慢。 Runtime:... -
POJ - 1276 二进制优化多重背包为01背包
2019-07-28 18:25:53题意:直接说数据,735是目标值,然后3是后面有三种钱币,四张125的,六张五块的和三张350的。 思路:能够轻易的看出这是一个多重背包问题,735是背包的容量,...化成的二进制数字排列组合,可以组成任意钱币数量... -
入门学习Linux常用必会60个命令实例详解doc/txt
2011-06-09 00:08:45从图1中可以看到,笔者系统中可以使用的Shell有bash(缺省)、csh、sh、tcsh四种。 exit 1.作用 exit命令的作用是退出系统,它的使用权限是所有用户。 2.格式 exit 3.参数 exit命令没有参数,运行后退出系统... -
2.2.9 A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf里面读数据,当A写完,且B,C,D都读一次后,A才能再写。用P,V操作实现。 2.3.0 将单向链表reverse,如ABCD变成DCBA,只能搜索链表一次。 2.3.1 将二叉树的...
-
C语言220例从易到难源代码
2018-04-19 13:18:07018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字... -
C语言经典源代码实例 数据结构 操作系统 图形等
2008-12-28 09:45:31018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字... -
C语言常用算法
2012-03-28 10:48:37018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字... -
经典的C程序220案列
2008-10-26 11:09:36018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字... -
C语言程序源代码(大集合).rar
2020-03-16 12:16:57018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 ... -
C语言实例解析精粹(第二版) 电子书及源代码
2011-07-17 20:12:56实例18 任意进制数的转换 实例19 判断回文数 实例20 求数组前n个元素之和 实例21 求解钢材切割的最佳订单 实例22 通过指针比较整数大小 实例23 指向数组的指针 实例24 寻找指定元素的指针 实例25 寻找相同... -
Excel新增工具集
2011-12-20 09:30:27例如:存到[独立]文件夹中的名称为张三、李四的两个文件,可以对应的分别转存到张三、李四两个文件夹中,并将这两个文件改名为[9月份工资]。 5、把工作表内容分类群发到邮件与手机:软件首先将工作表记录分类另存为... -
python cookbook(第3版)
2016-01-06 22:24:384.9 排列组合的迭代 4.10 序列上索引值迭代 4.11 同时迭代多个序列 4.12 不同集合上元素的迭代 4.13 创建数据处理管道 4.14 展开嵌套的序列 4.15 顺序迭代合并后的排序迭代对象 4.16 迭代器代替while无限... -
PaperTest Q&A笔试综述
2021-02-10 19:00:2913.排列组合问题 130 GoogLe+@http://dwz.cn/fada5 CsdN@http://dwz.cn/as2ik 1)组合 130 2)全排列 130 3)错排问题..0 133 4)输入,输出对应的所有长度为的二进制串 134 5)输入56,输出11-1621-26…51-... -
程控交换实验、用户模块电路 主要完成BORSCHT七种功能,它由下列电路组成:
2008-12-24 18:17:596、将四个用户接上电话单机。 7、正常呼叫全过程的观察与记录。(现以用户1为主叫,用户4为被叫进行实验) A、 主叫摘机,听到拨号音,数码管显示主叫电话号码“68” 。 B、 主叫拨首位被叫号码“8”,主叫拨号音停,...