牛客网笔试题

这篇博客整理了牛客网上遇到的编程笔试题目,包括三角形个数、钞票组合、生成回文、最短完美子串和字符组合等问题。通过回溯、递归和动态规划等算法进行解答,并探讨了不同题目的解题思路和优化方法。
摘要由CSDN通过智能技术生成

昨天算法今天后端,又水了两把笔试…在这里把待解决的编程题整理一下,端午回来了填坑。

三角形个数

如图所示,N层对应的三角形个数为?(除了使用递推公式,感觉应该用递归的方法,没时间写了…)
三角形
ans
这里写图片描述
这里写图片描述

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
  //注意while处理多个case
            int N = in.nextInt();
            int result = countTriangles(N);
            System.out.println(result);
        }
    }

    private static int countTriangles(int N){
        if(N == 0 || N == 1) return N;

        int before = 1;
        int cur =  0;
        while(N>1){
            int one = 2*N-1;  //包含最后一层的边长为1的三角形个数
            int upright = N*(N-1)/2; //包含最后一层的其他边长的正立三角形个数
            int upsideDown = 0;
            if((N&1)==1) upsideDown = (N-1)*(N-3)/4; //N为奇数时,包含最后一层的其他边长的倒立三角形个数
            else upsideDown = (N-2)*(N-2)/4;  //N为偶数时,包含最后一层的其他边长的倒立三角形个数
            cur = one + upright + upsideDown + before;
            before = cur;
            N--;
        }

        return cur;
    }

}

钞票组合

输入:N (钞票的种类个数,1~10)
输入:M(要组合得到的重量,1~100)
输入:N个钞票对应的 value, minWeight, maxWeight
所有的都是int值。 <

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值