算法竞赛入门经典第二版 2-6排列
来源:互联网 发布:应届毕业生简历 知乎 编辑:程序博客网 时间:2024/05/22 06:24
用1,2,3,...,9组成3个三位数abc, def和ghi,每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。按照"abc def ghi"的格式输出所有解,每行一个解。提示:不必太动脑筋。
原理是遍历所有数字再进行筛选,优点是简单容易实现,缺点是程序计算的时间较长。
#include <stdio.h>#define A 100#define B 999//题目:输出[1,9]其中三位组成的三位数,abc,def,ghi,每个数字恰好使用一次,并且要求abc:def:ghi=1:2:3。 int main(void){int i,j,k,n,m,boo_l=1; //数1,数2,数3,用于循环赋值,用于循环赋值 //boo_l用来假定每一个数都是满足条件的,在往后的判断中,不符合条件的数只要改变的boo_l的值就很容易让程序知道这个数符不符合条件 int count[10][2]; //用于计算[0,9]出现的次数 for(i=A;i<=B;i++) //有三个数字,所有三个循环for(j=A;j<=B;j++)for(k=A;k<=B;k++){ for(n=0;n<=9;n++){ //初始化计数器,用来筛选带有重复数字的数 count[n][1]=n; //比较对象count[n][2]=0; //计数器 }if(2*i == j && 3*j==2*k && 3*i == k){ //判断条件1 for(m=0;m<=9;m++){ //用于统计i中[0,9]出现的次数 if(i/100==count[m][1])count[m][2]++;if(j/100==count[m][1])count[m][2]++;if(k/100==count[m][1])count[m][2]++;}for(m=0;m<=9;m++){ //同上 if(i/10%10==count[m][1])count[m][2]++;if(j/10%10==count[m][1])count[m][2]++;if(k/10%10==count[m][1])count[m][2]++;}for(m=0;m<=9;m++){ //同上 if(i%100%10==count[m][1])count[m][2]++;if(j%100%10==count[m][1])count[m][2]++;if(k%100%10==count[m][1])count[m][2]++;}for(m=0;m<=9;m++){ //判断并排除带有重复数字的数 if(count[m][2]>1){boo_l=0;break;}}if(boo_l){ //输出满足条件的数字 printf("boo_l=%d %d %d %d\n",boo_l,i,j,k);}boo_l=1; //重置boo_l的数值 }}return 0;}
反思:过程中用了数组,按照正常的章节进度,这个问题可以不使用数组解决,在输出符合条件的数字上浪费了过多的调试时间,没有很好的理解嵌套循环的原理已经其中语句的执行方式。
阅读全文
0 0
- 算法竞赛入门经典第二版 2-6排列
- 算法竞赛入门经典(第二版) 习题2-6 排列(permutation)
- 排列 permutation 算法竞赛入门经典第二版 习题2-6
- 刘汝佳p35,2-6(123排列)算法竞赛入门经典第二版
- 算法竞赛入门经典第二版 2-6 permutation
- 《算法竞赛入门经典》习题2-6 三位数排列
- 算法竞赛入门经典第二版 4 - 2
- 算法竞赛入门经典第二版 2-5 decimal
- 算法竞赛入门经典第二版 第二章
- 算法竞赛入门经典-课后练习-2-10-排列
- 《算法竞赛入门经典》习题2-10 排列(permutation)
- 算法竞赛入门经典 习题 2-10 排列(permutation)
- 算法竞赛入门经典 习题2-10 排列(permutation)
- 算法竞赛入门经典 习题2-10 排列(permutation)
- 算法竞赛入门经典 习题2-10 排列(permutation)
- 枚举排列 -- 刘汝佳《算法竞赛入门经典》
- 排列 算法竞赛入门经典刘汝佳
- 【算法入门竞赛经典】【7.2枚举排列】
- 未来是巨型公司和个人的
- 第11周项目1
- BJTUOJ 连续数的和
- 一个高性能、轻量级的分布式内存队列系统--beanstalk
- 基于范围的for循环(C++11)
- 算法竞赛入门经典第二版 2-6排列
- Android群英传笔记集合
- linux yum安装命令 (含光盘yum源的搭建)
- SparkSQL与Hive on Spark的比较
- 关于vue.js版本问题
- 第11周项目2
- 助力中国制造2025,英飞凌联合西安交大发布《智能制造管理白皮书》
- C++中类的6个默认函数
- Java开发命名规范