博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《算法竞赛入门经典》习题2-6 三位数排列
阅读量:4316 次
发布时间:2019-06-06

本文共 1147 字,大约阅读时间需要 3 分钟。

原题

题意:用1,2,3,……9组成3个三位数 abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。

按照”abc def ghi”的格式输出所有解,每行一个解。

解题思路

这道题也是整数拆分、取整取余问题的基础练习。

关键信息在于“比例=1:2:3”和“都使用一次”。

  • 用visit数组标记每个数字是否出现过
  • 枚举(abc, def, ghi)可能的取值,将abcdefghi对应的数字元素都标记为true。
  • 遍历visit数组,能保证所有数字都出现的组合,即为所求答案。(如果某个数字出现了两次或者出现了0,一定会导致另外某个数字没有出现。)

AC代码

#include 
#include
using namespace std;int main(int argc, char const *argv[]){ int abc, def, ghi; for (abc = 123; abc<=329; ++abc) { bool visit[10] = {
false}; //统计0~9是否出现 //标记abc各位 visit[abc/100] = visit[abc/10%10] = visit[abc%10] = true; //标记def各位 def = 2*abc; visit[def/100] = visit[def/10%10] = visit[def%10] = true; //标记ghi各位 ghi = 3*abc; visit[ghi/100] = visit[ghi/10%10] = visit[ghi%10] = true; //检查完全性 bool flag = true; for (int i = 1; i<=9; ++i) if (visit[i] != true) { flag = false; break; } if (flag) cout << abc << ' ' << def << ' ' << ghi << endl; } return 0;}

测试结果如下:

测试结果

转载于:https://www.cnblogs.com/lecholin/p/6705263.html

你可能感兴趣的文章
Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射
查看>>
opacity半透明兼容ie8。。。。ie8半透明
查看>>
CDOJ_24 八球胜负
查看>>
Alpha 冲刺 (7/10)
查看>>
一款jQuery打造的具有多功能切换的幻灯片特效
查看>>
SNMP从入门到开发:进阶篇
查看>>
@ServletComponentScan ,@ComponentScan,@Configuration 解析
查看>>
unity3d 射弹基础案例代码分析
查看>>
thinksns 分页数据
查看>>
os模块
查看>>
LINQ to SQL vs. NHibernate
查看>>
基于Angular5和WebAPI的增删改查(一)
查看>>
windows 10 & Office 2016 安装
查看>>
最短路径(SP)问题相关算法与模板
查看>>
js算法之最常用的排序
查看>>
Python——交互式图形编程
查看>>
经典排序——希尔排序
查看>>
团队编程项目作业2-团队编程项目代码设计规范
查看>>
英特尔公司将停止910GL、915GL和915PL芯片组的生产
查看>>
团队编程项目作业2-团队编程项目开发环境搭建过程
查看>>