《啊哈!算法》第三章代码

本文介绍了《啊哈!算法》第三章的内容,包括3.2节的炸弹人问题,3.3节的火柴棍等式,以及3.4节的全排列。作者使用枚举法解决这些问题,并期待第四章的学习。
摘要由CSDN通过智能技术生成

细心的小伙伴可能发现我断更了一天,为什么呢?那是因为我开学啦(才不是因为懒呢)
在这里插入图片描述
那么,不废话了 第三章 3.2 炸弹人

public void bomberman(char[][] map){
        int most=0;
        int a1=0,a2=0;
        Scanner sc=new Scanner(System.in);
        for(int i=0;i<map.length;i++){
            map[i]=sc.next().toCharArray();
        }
        for(int i=0;i<map.length;i++){
            for(int j=0;j<map[0].length;j++){
                if(map[i][j]=='.'){
                    int x=0,y=0;
                    int sum=0;
                    x=i;
                    y=j;
                    while(map[x][y]!='#'){
                        if(map[x][y]=='G')
                            sum++;
                        x--;
                    }
                    x=i;
                    y=j;
                    while(map[x][y]!='#'){
                        if(map[x][y]=='G')
                            sum++;
                        x++;
                    }
                    x=i;
                    y=j;
                    while(map[x][y]!='#'){
                        if(map[x][y]=='G')
                            sum++;
                        y--;
                    }
                    x=i;
                    y=j;
                    while(map[x][y]!='#'){
                        if(map[x][y]=='G')
                            sum++;
                        y++;
                    }
                    if(most<sum){
                        most=sum;
                        a1=i;
                        a2=j;
                    }
                }
            }
        }
        System.out.println("the best place is ("+a1+","+a2+"),which can kill "+most
                +" enemies!");
    }

其实就是完全列一遍,比较好理解。
3.3 火柴棍等式

 public int Matchnum(int a){
        int[] matchNeed={6,2,5,5,4,5,6,3,7,6};
        int sum=0;
        while(a/10!=0){
            sum+=matchNeed[a%10];
            a=a/10;
        }
        sum+=matchNeed[a];
        return sum;
    }
    public static void main(String[] args){
        algorithm test=new algorithm();
        Scanner sc=new Scanner(System.in);
        int m=sc.nextInt();
        for(int i=0;i<11111;i++){
            for(int j=0;j<11111;j++){
                if(test.Matchnum(i)+test.Matchnum(j)+test.Matchnum(i+j)==m-4){
                    int sum=i+j;
                    System.out.println(i+"+"+j+"="+sum);
                }
            }
        }
    }

3.4 全排列 啊哈磊大佬完全把谜题留到第四章啦~先用现学的枚举做一遍吧,迫不及待想看第四章了?

public void Permutations(int n){
        int[] book=new int[11];
        for(int i=1;i<=9;i++)
            book[i]=0;
        if(n==1)
            System.out.println("1");
        if(n==2)
            System.out.println("12,21");
        if(n==3){
            for(int a=1;a<=3;a++){
                for(int b=1;b<=3;b++){
                    for(int c=1;c<=3;c++){
                        for(int i=1;i<=3;i++)
                            book[i]=0;
                        int sum=0;
                        book[a]=1;
                        book[b]=1;
                        book[c]=1;
                        for(int i=1;i<=3;i++)
                            sum+=book[i];
                        if(sum==3) {
                            System.out.print(a);
                            System.out.print(b);
                            System.out.print(c+" ");
                        }
                    }}}}
        if(n==4) {
            for (int a = 1; a <= 4; a++) {
                for (int b = 1; b <= 4; b++) {
                    for (int c = 1; c <= 4; c++) {
                        for (int d = 1; d <= 4; d++) {
                            for(int i=1;i<=4;i++)
                                book[i]=0;
                            int sum=0;
                            book[a]=1;
                            book[b]=1;
                            book[c]=1;
                            book[d]=1;
                            for(int i=1;i<=4;i++)
                                sum+=book[i];
                            if(sum==4) {
                                System.out.print(a);
                                System.out.print(b);
                                System.out.print(c);
                                System.out.print(d+" ");
                            }
                        }
                    }
                }
            }
        }
            if(n==5){
                for(int a=1;a<=5;a++) {
                    for (int b = 1; b <= 5; b++) {
                        for (int c = 1; c <= 5; c++) {
                            for (int d = 1; d <= 5; d++) {
                                for(int e=1;e<=5;e++){
                                    for(int i=1;i<=5;i++)
                                        book[i]=0;
                                    int sum=0;
                                    book[a]=1;
                                    book[b]=1;
                                    book[c]=1;
                                    book[d]=1;
                                    book[e]=1;
                                    for(int i=1;i<=5;i++)
                                        sum+=book[i];
                                    if(sum==5) {
                                        System.out.print(a);
                                        System.out.print(b);
                                        System.out.print(c);
                                        System.out.print(d);
                                        System.out.print(e+" ");
                                    }
                            }}}}}
            }
            if(n==6){
                for(int a=1;a<=6;a++) {
                    for (int b = 1; b <= 6; b++) {
                        for (int c = 1; c <= 6; c++) {
                            for (int d = 1; d <= 6; d++) {
                                for(int e=1;e<=6;e++){
                                    for(int f=1;f<=6;f++){
                                    for(int i=1;i<=6;i++)
                                        book[i]=0;
                                        int sum=0;
                                        book[a]=1;
                                        book[b]=1;
                                        book[c]=1;
                                        book[d]=1;
                                        book[e]=1;
                                        book[f]=1;
                                        for(int i=1;i<=6;i++)
                                            sum+=book[i];
                                        if(sum==6) {
                                            System.out.print(a);
                                            System.out.print(b);
                                            System.out.print(c);
                                            System.out.print(d);
                                            System.out.print(e);
                                            System.out.print(f+" ");
                                        }
                                }}}}}}
            }
            if(n==7){
                for(int a=1;a<=7;a++) {
                    for (int b = 1; b <= 7; b++) {
                        for (int c = 1; c <= 7; c++) {
                            for (int d = 1; d <= 7; d++) {
                                for(int e=1;e<=7;e++){
                                    for(int f=1;f<=7;f++){
                                        for(int g=1;g<=7;g++){
                                            for(int i=1;i<=7;i++)
                                                book[i]=0;
                                            int sum=0;
                                            book[a]=1;
                                            book[b]=1;
                                            book[c]=1;
                                            book[d]=1;
                                            book[e]=1;
                                            book[f]=1;
                                            book[g]=1;
                                            for(int i=1;i<=7;i++)
                                                sum+=book[i];
                                            if(sum==7) {
                                                System.out.print(a);
                                                System.out.print(b);
                                                System.out.print(c);
                                                System.out.print(d);
                                                System.out.print(e);
                                                System.out.print(f);
                                                System.out.print(g+" ");
                                            }
                                    }}}}}}}
            }
            if(n==8){
                for(int a=1;a<=8;a++) {
                    for (int b = 1; b <= 8; b++) {
                        for (int c = 1; c <= 8; c++) {
                            for (int d = 1; d <= 8; d++) {
                                for(int e=1;e<=8;e++){
                                    for(int f=1;f<=8;f++){
                                        for(int g=1;g<=8;g++){
                                            for(int h=1;h<=8;h++){
                                                for(int i=1;i<=8;i++)
                                                    book[i]=0;
                                                int sum=0;
                                                book[a]=1;
                                                book[b]=1;
                                                book[c]=1;
                                                book[d]=1;
                                                book[e]=1;
                                                book[f]=1;
                                                book[g]=1;
                                                book[h]=1;
                                                for(int i=1;i<=8;i++)
                                                    sum+=book[i];
                                                if(sum==8) {
                                                    System.out.print(a);
                                                    System.out.print(b);
                                                    System.out.print(c);
                                                    System.out.print(d);
                                                    System.out.print(e);
                                                    System.out.print(f);
                                                    System.out.print(g);
                                                    System.out.print(h+" ");
                                                }
                                        }}}}}}}}
            }
            if(n==9){
                for(int a=1;a<=9;a++) {
                    for (int b = 1; b <= 9; b++) {
                        for (int c = 1; c <= 9; c++) {
                            for (int d = 1; d <= 9; d++) {
                                for(int e=1;e<=9;e++){
                                    for(int f=1;f<=9;f++){
                                        for(int g=1;g<=9;g++){
                                            for(int h=1;h<=9;h++){
                                                for(int k=1;k<=9;k++){
                                                    for(int i=1;i<=9;i++)
                                                        book[i]=0;
                                                    int sum=0;
                                                    book[a]=1;
                                                    book[b]=1;
                                                    book[c]=1;
                                                    book[d]=1;
                                                    book[e]=1;
                                                    book[f]=1;
                                                    book[g]=1;
                                                    book[h]=1;
                                                    book[k]=1;
                                                    for(int i=1;i<=9;i++)
                                                        sum+=book[i];
                                                    if(sum==9) {
                                                        System.out.print(a);
                                                        System.out.print(b);
                                                        System.out.print(c);
                                                        System.out.print(d);
                                                        System.out.print(e);
                                                        System.out.print(f);
                                                        System.out.print(g);
                                                        System.out.print(h);
                                                        System.out.print(k+" ");
                                                    }
                                            }}}}}}}}}
            }
    }
    public static void main(String[] args){
        algorithm test=new algorithm();
        Scanner sc=new Scanner(System.in);//要求不大于9的正整数
        int m=sc.nextInt();
        test.Permutations(m);
    }

呕——太变态了!说到底数据太多枚举听起来就很不靠谱嘛!还是期待期待第四章好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值