一道有趣的算法题。。。

题目意思:

用1, 2, 3 ,4 ,5, 6, 7, 8, 9 组成3个三位数 abc, def 和 ghi, 每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。输出所有解。

分析:

模拟所有三位数,判断条件有二:

一、i(abc):j(def):k(ghi)=1:2:3

二、判断是否出现的1~9之间的所有数字

代码:

/**

*一道有趣的算法题

*

*/

#include<iostream>

#include<cstdio>

using namespace std;

int main()

{

for(int i=123;i<=987;i++){

for(int j=i+1;j<=987;j++){

for(int k=j+1;k<=987;k++){

if(i*2==j&&i*3==k){//判断是否是1:2:3

int a[10]={0};//判断是否重复,是否出现1~9之间所有书

a[i%10]++;  a[i/10%10]++;   a[i/100]++;

a[j%10]++;  a[j/10%10]++;   a[j/100]++;

a[k%10]++;  a[k/10%10]++;   a[k/100]++;

int c;

for(c=1;c<=9;c++){

if(a[c]==0) break;//没有数字c,退出

}

if(c==10){

printf("%d:%d:%d=1:2:3\n",i,j,k);

}

}

}

}

}

return 0;

}

时间: 2024-10-25 02:13:08

一道有趣的算法题。。。的相关文章

一道有趣的算法题:仿照Excel的列编号,给定一个数字,输出该列编号字符串

       By Long Luo 最近遇到一个算法题: 仿照Excel的列编号,给出一个数字,输出该列编号字符串. 例如:A对应1,Z对应26,AA对应27,AZ对应52 ...... 这个题目是一个典型的26进制思路去处理,但是这个题目里面有很多陷阱,在1, 26, 52等特殊情况进行考虑,经过晚上接近1个小时的编写,完成的代码如下: C++代码如下: #include <iostream> #include <string.h> using namespace std; /

一道简单的算法题(三角形数阵)

今天同学给了几个算法题,看了一遍,觉得第一道题简单,试着写了一下,果然很简单. 题目是 核心代码只有 for(var i= 0; i< N; i++){ str += '<div class="item">'; for(var j= 0; j< N-i; j++){ str += '<div class="list">'+ start +'</div>'; start++; if(start > T){ star

百度的一道二面算法题分析:补全括号序列

算法题:补全括号序列 百度二面遇到的一个问题 大概意思就是 给出一个中括号序列,在序列前后可以加中括号字符,补全它... 当时没想起来解决办法,然后凉凉了,后来专门去搞了这道题,终于搞定 思路在注释里写的比较详细了,此处不再赘述(用了类似栈的思想) <?php /** * 字符串转数组 * @param $str string 输入的字符串 * @return array 转换之后的结果数组 */ function strToArray($str) { // 强制转换为字符串 $str = (s

记一道有意思的算法题Rotate Image(旋转图像)

题出自https://leetcode.com/problems/rotate-image/ 内容为: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place? 简单的说就是给出一个n*n的二维数组,然后把这个数组进行90度顺时针旋转,而且不能使用额外的存储空间. 最初拿到这道题

一道有趣的js题以及个人的理解

var number = 2; var obj = { number : 4, fn1 : ( function() { this.number *= 2; number=number*2; var number=3; return function() { this.number *= 2; number*=3; alert(number); } } )(), db2:function(){this.number*=2} }; var fn1 = obj.fn1; alert(number);

BOBSLEDDING(一道有趣的贪心题 nyoj309)

BOBSLEDDING 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 Dr.Kong has entered a bobsled competition because he hopes his hefty weight will give his an advantage over the L meter course (2 <= L<= 1000). Dr.Kong will push off the starting line at 1 meter per

一个有趣的算法题

以下解题方法来自于他人! 题目: 一副牌,序号从1到n,每次从牌堆顶部拿出一张牌放在桌子上,并将下一张牌放到牌堆地下,依次循环,最终在桌子上的牌从1到n的有序.设计程序实现 1.模拟这个过程: 建立一个队列,将数字1到n依次入队,作为牌堆中从牌堆顶部到最后一张牌的次序.按照题意从数组中取数,比如拿出第一张牌,即从队列头部取出1放入临时数组t中,并取出数字2放进队列末尾,依次进行,直至队列为空.此时得到的数组t即为取牌的次序.根据题意,按照此顺序得到的牌的序号应该是从1到n有序的. 将t中的元素作

一道有趣的签到题

题目链接 题目描述 写一个程序,使其能输出自己的源代码. 代码中必须至少包含十个可见字符. 输入格式 输入文件为空. 输出格式 你的源代码. 从来没想过还可以这么玩φ(゜▽゜*)? 看着别人的题解写了一份代码: #include<bits/stdc++.h> #define kk(x) #x using namespace std; char s[]=kk(int main(){puts("#include<bits/stdc++.h>");puts("

常见算法题合辑(一)

这一章的内容,有些之前已经在微信公众号中将详细的思路及步骤汇总过,有些之后可能会再找时间对其进行分析,这里只将最终实现罗列出来,难易程度不分先后,算法复杂度不保证是最优,留给大家空间自行思考,当然,本章用的是C#语言进行编码,大家可以使用自己熟悉的语言将这些算法实现一遍哦~ 如果你有什么有趣的算法题或者没能解决的算法题,也可以留言给小编,让我们一起玩转算法~ 1. 冒泡排序 这个算是所有算法中最为简单的了,实现方法如下: 2. 插入排序 从排序算法来看,这个算法也是属于比较简单的了,实现方法如下