动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

30天自动登录
微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

两道经典算法问题

03-29 13:18 394浏览
举报 T字号
  • 大字
  • 中字
  • 小字

1.金字塔问题

题目如下:

输出一个大写字母组成的金字塔,其中space表示金字塔底距离左边的空白长度,x表示金字塔底的中心字母。

比如:space=0, x=’C’,则输出:

A

ABA

ABCBA

再如:space=2,x=’E’, 则输出:

A

ABA

ABCBA

ABCDCBA

ABCDEDCBA

public class Test {
    public static void h(int space, char x){
        int i;
        if(x<'A' || x>'Z') return;
        h(space+1,(char)(x-1));
        for(i=0; i<space; i++) System.out.printf(" ");
        for(i=0; i<x-'A'; i++) System.out.printf("%c",'A'+i);
        for(i=0; i<=x-'A'; i++) System.out.printf("%c",(char)(x-i));
        System.out.printf("\n");
    }
    public static void main(String[] args) {
        int space=0;//表示金字塔底距离左边的空白长度
        char x= 'F';//表示金字塔底的中心字母
        h(space,x);
    }
}

代码运行结果如图所示:

2.组合数问题

题目如下所示:

从4个人中选2个人参加活动,一共有6种选法。

从n个人中选m个人参加活动,一共有多少种选法?运用函数实现这个功能。

public class Test {
    // n 个元素中任取 m 个元素,有多少种取法
    public static int f(int n, int m){
        if(m>n) return 0;
        if(m==0) return 1;

        return f(n-1,m-1) + f(n-1,m);
    }
    public static void main(String[] args){
        System.out.println(f(4,2));
    }
}

代码运行结果如图所示:

1人推荐
共同学习,写下你的评论
0条评论
代码小兵516
程序员代码小兵516

7篇文章贡献20045字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java初学者学习方法

代码小兵64503-29 11:46

两道经典算法问题

代码小兵51603-29 13:18

Java中模拟高并发的方法

代码小兵87208-06 11:36

Java程序员必备的一些流程图

代码小兵64503-29 15:27

Java接口限流的实现方法

代码小兵57603-29 17:52

发评论

举报

0/150

取消