看这个算式:
 
    ☆☆☆ + ☆☆☆ = ☆☆☆

    如果每个五角星代表 1 ~ 9 的不同的数字。

    这个算式有多少种可能的正确填写方法?

    173 + 286 = 459
    295 + 173 = 468
    173 + 295 = 468
    183 + 492 = 675

    以上都是正确的填写法!

    注意:
    111 + 222 = 333 是错误的填写法!
    因为每个数字必须是不同的!
    也就是说:1~9中的所有数字,每个必须出现且仅出现一次!

结题思路:
排列1~9,写出符合条件的结果。
代码如下:


public class Main {
    
    
static int bs[] = {123456789};
    
static int count = 0;
    
public static void main(String[] args)
    
{
        count 
= 0;
        DFS(
0);
        System.out.println(
"count=" + count);
    }

    
static void DFS(int nowp){
        
if(nowp == bs.length){
            
int n1 = bs[0* 100 + bs[1* 10 + bs[2];
            
int n2 = bs[3* 100 + bs[4* 10 + bs[5];
            
int n3 = bs[6* 100 + bs[7* 10 + bs[8];
            
if(n1 + n2 == n3){
                System.out.println(n1 
+ " + " + n2 + " = " + n3);
                count
++;
            }

        }

        
else{
            
for(int i = nowp; i < bs.length; i++){
                swap(nowp, i);
                DFS(nowp 
+ 1);
                swap(nowp, i);
            }

        }

    }

    
static void swap(int a, int b){
        
int t = bs[a];
        bs[a] 
= bs[b];
        bs[b] 
= t;
    }

}



 

posted on 2013-07-07 16:08 小鼠标 阅读(299) 评论(0)  编辑 收藏 引用 所属分类: Java基础练习
<2013年7月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

随笔分类(111)

随笔档案(127)

friends

最新评论

  • 1. re: 线段树
  • 是这个样子的,所以在OJ有时候“卡住”了也不要太灰心,没准真的不是自己的原因呢。
    加油,祝你好运啦!
  • --小鼠标
  • 2. re: 线段树
  • 对于编程竞赛来说,Java所需时间一般为C/C++的两倍。合理的竞赛给Java的时间限制是给C/C++的两倍。
  • --伤心的笔
  • 3. re: poj1273--网络流
  • 过来看看你。
  • --achiberx
  • 4. re: (转)ubuntu11.10无法启动无线网络的解决方法
  • 膜拜大神。。查了一个下午资料终于在这里解决了问题。。神牛说的区域赛难道是ACM区域赛。。?
  • --Hang
  • 5. re: 快速排序、线性时间选择
  • 博主,谢谢你的文章。你的方法可以很好的处理分区基准在数组中重复的情况,书上的方法遇到这种输入会堆栈溢出。书上给出了解释但给的方法貌似不简洁。
  • --lsxqw2004

阅读排行榜