算法(例题)

文章包含了多道编程题目,第一题是找出1到2020中既是4的倍数也是6的倍数的数,答案是168。第二题讨论1到10000的整数用二进制表示所需的最少位数,答案是14位。第三题是关于长度为5的升序序列的计数,答案是1287。第四题涉及无向图的最少节点数,答案是65。最后一题计算字符串中字符间的平均距离,以LANQIAO为例,答案是162。
摘要由CSDN通过智能技术生成

第一题

请问在 1 到 2020 中,有多少个数既是 4 的整数倍,又是 6 的整数倍
答案:168
public class T3 {
static int count=0;

public static void main(String[] args) {
    DFS(1,0);
    System.out.println(count);
}
public static void DFS(int num,int n){
    if(n==5){
        count++;
        return;
    }
    for(int i=num;i<10;i++){
        DFS(i,n+1);
    }
}

}

第二题

小明要用二进制来表示 1 到 10000 的所有整数,要求不同的整数用不同的二进制数表示,请问,为了表示 1 到 10000 的所有整数,至少需要多少个二进制位?
答案:14 (用计算器按一下 数一下位数就行)

第三题

请问有多少个序列满足下面的条件:

序列的长度为 5。
序列中的每个数都是 1 到 10 之间的整数。
序列中后面的数大于等于前面的数。
答案:1287
解题方法:用的DFS遍历所有结果
public class T3 {
static int count=0;

public static void main(String[] args) {
    DFS(1,0);
    System.out.println(count);
}
public static void DFS(int num,int n){
    if(n==5){
        count++;
        return;
    }
    for(int i=num;i<10;i++){
        DFS(i,n+1);
    }
}

}

第四题

一个无向图包含 2020 条边,如果图中没有自环和重边,请问最少包含多少个结点?
答案:65
用公式算 n个节点的无向图最多 有 n*(n-1)*2 条边,用边算节点就是解方程啦

第五题

两个字母之间的距离定义为它们在字母表中位置的距离。例如 A 和 C 的距离为2,L 和 Q 的距离为 5。对于一个字符串,我们称字符串中两两字符之间的距离之和为字符串的内部距离。例如:ZOO 的内部距离为 22,其中 Z 和 O 的距离为 11。请问,LANQIAO 的内部距离是多少?

答案:162

public static void main(String[] args) {
    System.out.println(getLength("ZOO"));
}
public static int getLength(String str){
    int ans=0;
    int n=str.length();
    int right=0;
    while(right<n){
        char r_ch=str.charAt(right);
        for(int left=0;left<right;left++) {
            char l_ch = str.charAt(left);
            ans += Math.abs(r_ch - l_ch);
        }
        right++;
    }
    return ans;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值