博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DFS小题
阅读量:7077 次
发布时间:2019-06-28

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

原创


题目为:()()()+()()()=()()()

将1~9这9个数字填入括号,每个数字只能用一次。

枚举:

1 public class Test { 2     public static void main(String[] args){ 3         int a[]=new int[9]; 4         int flag[]=new int[10]; 5         long total=0L; 6         for(int i=1;i<=9;i++) { 7             flag[i]=0; 8         } 9         for(a[0]=1;a[0]<=9;a[0]++) {10             for(a[1]=1;a[1]<=9;a[1]++) {11                 for(a[2]=1;a[2]<=9;a[2]++) {12                     for(a[3]=1;a[3]<=9;a[3]++) {13                         for(a[4]=1;a[4]<=9;a[4]++) {14                             for(a[5]=1;a[5]<=9;a[5]++) {15                                 for(a[6]=1;a[6]<=9;a[6]++) {16                                     for(a[7]=1;a[7]<=9;a[7]++) {17                                         for(a[8]=1;a[8]<=9;a[8]++) {18                                             int tt=0;19                                             for(int i=0;i<=8;i++) {20                                                 flag[a[i]]=1;21                                             }22                                             for(int i=1;i<=9;i++) {23                                                 tt+=flag[i];24                                             }25                                             if(tt==9) {26                                                 if(a[0]*100+a[1]*10+a[2]+a[3]*100+a[4]*10+a[5]==a[6]*100+a[7]*10+a[8]) {27                                                     total++;28                                                     tt=0;29                                                 }30                                             }31                                             for(int i=1;i<=9;i++) {    //数组恢复32                                                 flag[i]=0;33                                             }34                                             35                                         }36                                     }37                                 }38                             }39                         }40                     }41                 }42             }43         }44         System.out.println(total/2);45     }46 }
View Code

全排列:

关于全排列,请看我上一篇博客:

1 public class Test{ 2      3     static int flag[]=new int[10];    //flag[i]=0代表第i个数未用 4     static int win[]=new int[9]; 5     static long total=0L; 6      7     public static void dfs(int step) {    //第step个格子 8         if(step==9) { 9             if(win[0]*100+win[1]*10+win[2]+win[3]*100+win[4]*10+win[5]==win[6]*100+win[7]*10+win[8]) {10                 total++;11             }12             return;13         }14         for(int i=1;i<=9;i++) {    //尝试按顺序将1~9其中一个放入格子15             if(flag[i]==0) {16                 win[step]=i;17                 flag[i]=1;18                 dfs(step+1);19                 flag[i]=0;20             }21         }22     }23     24     public static void main(String args[]) {25         for(int i=1;i<=9;i++) {26             flag[i]=0;27         }28         dfs(0);29         System.out.println(total/2);30     }31 }
View Code

答案:168

23:26:20

2018-07-09

转载于:https://www.cnblogs.com/chiweiming/p/9283331.html

你可能感兴趣的文章
转:进程 线程 协程 管程 纤程 概念对比理解
查看>>
站内全文搜索
查看>>
scala函数和方法的差别
查看>>
苹果平台上的媒体流播放技术HLS
查看>>
图书馆管理系统程序设计
查看>>
WebService Rest接收大量数据出现基础连接已经关闭的解决方案
查看>>
小R的烦恼 BZOJ3280
查看>>
左神算法基础班4_5折纸问题
查看>>
float运算精度丢失解决方法
查看>>
DNS 工作原理是什么,域名劫持、域名欺骗、域名污染又是什么
查看>>
settings配置数据库和日志
查看>>
【整理】SYSCOMMAND的wParam值的宏定义
查看>>
.net Application的目录
查看>>
洛谷 P1313 计算系数 Label:杨辉三角形 多项式计算
查看>>
YUV色彩空间(转自百度百科)
查看>>
创建服务
查看>>
Sencha Touch 2.1学习图表Chart概述
查看>>
NYOJ467 中缀式变后缀式
查看>>
qwq
查看>>
C#中timer类的用法
查看>>