从1-9中选9个数字全部选到且不能重复选取
之前做蓝桥杯的题目的时候,遇到一次这种题目,在1到9中选9个数字且不能重复,一直百度也没有找到合适的方法。今天在这里为大家编写算法(其实和冒泡排序算法差不多,大家如果还有好的算法可以留言哦),题目是这种题目,其实后面函数就是化为怎么判断不重复的问题。
1.问题描述:
凑算式
B DEF
A + --- + ------- = 10
C GHI
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
2.算法思路:
这道题目刚开始看到,我是想到用for循环暴力,一想要写9个for循环,立马想放弃了。但其实不用这样,只用写5个for循环,将DEF和GHI看成一个整体,设置变量a1,a2,a3,a4,a5,然后再for循环。循环完了,再调用函数isReaped(a1,a2,a3,a4,a5),判断是否重复,不重复输出即可。
3.代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | public class Pchou{ public static void main(String[] args) { int a1,a2,a3,a4,a5; //5个数 int count = 0 ; for (a1= 1 ;a1< 10 ;a1++){ for (a2= 1 ;a2< 10 ;a2++){ for (a3= 1 ;a3< 10 ;a3++){ for (a4= 100 ;a4< 988 ;a4++){ for (a5= 100 ;a5< 988 ;a5++){ if (( double )(a1*a5*a3)/(a3*a5) + ( double )(a2*a5)/(a5*a3) + ( double )(a4*a3)/(a5*a3) == 10 && isRepeaded(a1,a2,a3,a4,a5)){ System.out.printf( "%d+%d/%d+%d/%d\n" ,a1,a2,a3,a4,a5); count++; } } } } } } System.out.println( "总数为:" + count); } //判断数是否重复 public static boolean isRepeaded( int a1, int a2, int a3, int a4, int a5) { char [] charArray1 = String.valueOf(a4).toCharArray(); char [] charArray2 = String.valueOf(a5).toCharArray(); int b[] = new int [ 3 ]; int c[] = new int [ 3 ]; for ( int i= 0 ;i< 3 ;i++){ b[i] = charArray1[i] - '0' ; c[i] = charArray2[i] - '0' ; } //将这些数全部保存在temp中 int temp[] = {a1,a2,a3,b[ 0 ],b[ 1 ],b[ 2 ],c[ 0 ],c[ 1 ],c[ 2 ]}; //现在把所有的数都分离出来了,只要这几个数不重复即可,关键在于怎么判断这些数在0-9且不重复 int flag = 0 ; for ( int i= 0 ;i< 8 ;i++){ for ( int j=i+ 1 ;j< 9 ;j++){ if (temp[j] == temp[i]){ flag = 1 ; } } } if (flag == 0 ){ return true ; } else { return false ; } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)