排列(permutition)
来源:互联网 发布:无锡房价 知乎 编辑:程序博客网 时间:2024/05/29 08:35
用1,2,3……9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。输出所有解。提示:不必太动脑筋。
本题无法直接简单粗暴地用if(1<=a<=9&&1<=b<=9&&……){……}解决。
这里,如果if语句写成if(1<=a,b,c,d,e,f,g,h,i<=9) 更是错的,这句话并不能表达a~i都在1~9的范围内;因为逗号的运算符最低级,算数比较运算符运算级比逗号高,所以1<=a,b,c,d,e,f,g,h,i<=9相当于(1<=a),b,c,d,e,f,g,h,(i<=9),即中间的b,c,d,e,f,g,h是无意义的。
错误代码:目前不知道为什么这个代码不行
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int main(){ int a,b,c,d,e,f,g,h,i; int x=a*100+b*10+c,y=d*100+e*10+f,z=g*100+h*10+i; y=x*2;z=x*3; if(1<=a<=9&&1<=b<=9&&1<=c<=9&&1<=d<=9&&1<=e<=9&&1<=f<=9&&1<=g<=9&&1<=h<=9&&1<=i<=9) { if((a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(a!=f)&&(a!=g)&&(a!=h)&&(a!=i)&&......) { printf("%d%d%d%d%d%d%d%d%d\n",a,b,c,d,e,f,g,h,i); } } return 0;}
正确代码:利用数组,a[1]~a[9]赋值为0,令a[出现的数字] = 1,若a[1] + a[2] + …… +a[9] == 9,则全部数字都出现。
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int main() { int x, y, z, a[10] = {0}; for(x = 100; x < 333; x++) { y = 2*x; z = 3*x; //令a[出现的数字] = 1 a[x/100] = a[x/10%10] = a[x%10] = 1; a[y/100] = a[y/10%10] = a[y%10] = 1; a[z/100] = a[z/10%10] = a[z%10] = 1; int i, s = 0; for(i = 1; i < 10; i++) s += a[i]; if(s == 9) printf("%d %d %d\n", x, y, z); for(i = 1; i < 10; i++) //重新赋值为0 a[i] = 0; } return 0; }
阅读全文
0 0
- 排列(permutition)
- POJ 1833 排列(全排列 STL)
- hdu 1716 排列2 (全排列)
- 1384 全排列(全排列)
- 算法题--字符排列(全排列)
- 当前排列的下一个排列(leetcode31)
- 全排列(C++)
- hdu2049(排列)
- 字母排列(定长)
- QuickSort(快速排列)
- 排列(permutation)
- 全排列(STL)
- 排列(permutation)
- hdu1716(排列2)
- 排列问题(permutation)
- 全排列(算法)
- 全排列(DFS)
- 排列(decimal)
- 利用postfix+mutt+dovecot 搭建邮件的收发服务器
- Android布局的优化-include、merge、ViewStub
- 初识SVN
- 高斯投影
- struts2中文乱码问题
- 排列(permutition)
- 设计模式之装饰者设计模式
- python模拟网站登录
- jieba分词
- ERROR 1142 (42000): INSERT command denied to user 'radius'@'localhost' for table 'radcheck'
- 深拷贝和浅拷贝
- 使用SciPy进行常用的图像操作
- html中的特殊字符
- 浅谈Java中的深拷贝和浅拷贝