算法学习——枚举之完美综合式
2023-02-18 16:40:26 时间
算法描述
要求
- 各个一位数不能是1
- 只能填写1~9的数字
- 方框里的数字不能重复
算法思路
-
首先是将每个一位数和两位数都看成一个数,我们可以使用a,b,c,d,e,f六个数代替
-
设置for循环,枚举a,b,c,d,e,f这六个数
a 范围2~9(因为是不允许各个一位数为1)
b 范围2~9(同理)
c 范围10~99
d 范围10~99
e 范围10~99
f 范围2~9
这里需要注意的是c和d的枚举,设置的时候有些巧妙,由于d是被除数,所以我们
优先改变的应该是c
,而且,由题目我们可以猜测出,这里的c和d应该是可以整除的,所以我们可以将c作为d的倍数增加for(d=10;d<=99;d++)
for(c=d;c<=99;c=c+d)
-
乘方函数可以使用java中Math.pow函数
-
设置一个函数判断式子是否成立,成立则返回true,不成立则返回false
-
设置一个函数判断式子中的各个数是否包含0,是否重复,返回类型也是一个boolean类型
-
上述两个函数返回的数值均是true则可以判断a,b,c,d,e,f是满足要求的数字,打印出来(或者是使用整除和取余的方法一个个数的取出)
算法实现
int a,b,c,d,e,f;
for(a=2;a<=9;a++){
for(b=2;b<=9;b++){
for(d=10;d<=99;d++){
for(c=d;c<=99;c=c+d){
for(e=10;e<=99;e++){
for(f=2;f<=9;f++){
if(jisuan(a, b, c, d, e, f)){
if(isChongfu(a, b, c, d, e, f)){
System.out.println(a+","+b+","+c+","+d+","+e+","+f);
}
}
}
}
}
}
}
}
}
public static boolean jisuan(int a,int b,int c,int d,int e,int f){
return (Math.pow(a, b) + c/d )==e*f;
}
public static boolean isChongfu(int a,int b,int c,int d,int e,int f){
int[] flag = new int[9];
flag[0]=a;
flag[1]=b;
flag[2]=c/10;
flag[3]=c%10;
flag[4]=d/10;
flag[5]=d%10;
flag[6]=e/10;
flag[7]=e%10;
flag[8]=f;
for(int i=0;i<flag.length;i++){
if(flag[i]==0){
return false;
}
}
for(int i=0;i<flag.length-1;i++){
for(int j=i+1;j<flag.length;j++){
if(flag[i]==flag[j]){
return false;
}
}
}
return true;
}
结果
相关文章
- 微信公众平台网页登录授权多次重定向跳转,导致code使用多次问题
- Visual Studio高效实用的扩展工具、插件
- 关于微信企业付款到零钱X509Certificate2读取证书信息,发布到服务器访问不到的解决方案
- 关于ASP.NET MVC 项目在本地vs运行响应时间过长无法访问时,解决方法!
- 彻底关闭windows10自动更新解决方案
- Window10升级遇到大坑错误代码:0xc000000e完美解决方案
- ASP.NET MVC默认配置如有跳转到指定的Area区域中的对应程序中
- 使用MySQLl事件定时执行岗位七天下线任务
- .NET之微信消息模板推送
- 关于Layer web弹层组件的加载(loading)层位置居中问题
- 微信公众号支付提示mch_id参数格式错误
- C#常见金额优选类型及其三种常用的取整方式
- .NET微信网页开发之通过UnionID机制,解决用户在不同公众号,或在公众号、移动应用之间帐号统一问题
- Mui Webview下来刷新上拉加载实现
- Select下拉框使用ajax异步绑定数据
- .NET、C#基础知识
- 记一个数据库游标的实例
- .NET 使用OLEDB导入Excel数据
- 通用分页存储过程,干货无污染
- .NET如何引用System.Drawing.Drawing2D 命名空间和System.Drawing.Image及其相关概念