奇安信笔试8.1-8.15-9.2

本文介绍了几个编程挑战,包括撤销恢复功能的实现,完全背包问题的动态规划解决方案,以及如何解决亲7数的回溯算法。同时,还提到了爬楼梯问题和分房子问题,涉及多种算法思维的应用。
摘要由CSDN通过智能技术生成

老板发钱

老板共有n元,每次发奖金可以发1元,2元,3元,请问发n元一共有多少种发的方法?

import java.util.Scanner;

public class qianxin {
   
    public static void main(String[] args) {
   
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int []dp=new int[n+1];
        if(n<=2){
   
            System.out.print(n);
        }
        dp[1]=1;
        dp[2]=2;
        dp[3]=4;
        for (int i=4;i<n+1;i++){
   
            dp[i]=dp[i-1]+dp[i-2]+dp[i-3];
        }
        System.out.print(dp[n]);
    }
}


撤销恢复

撤销/恢复操作具有广泛的用途,比如word文档中输入一个单词,可以点撤销,然后可以再恢复。
编程实现如下功能:从标准的输入读取到一个字符串,字符串可以包含0个或者多个单词,单词以空格或者tab分隔。如果遇到"undo"字符串表示“撤销”操作,前一个字符串被撤销掉;如果遇到"redo"字符串,表示恢复刚才撤销掉的字符串。
例如:
输入:

hello undo redo world

输出:

hello world

输入:

hello undo world undo like undo redo me

输出:

like me
import java.util.*;
public class Main {
   
    public static void main(String[] args) {
   
        Scanner sc = new Scanner(System.in);
        String[] strs = sc.nextLine().split("\\s+");
        //"\\s"表示 空格,回车,换行等空白符,+号表示一个或多个的意思
        System.out.println(Cal(strs));
    }
    public static String Cal (String[] strs) {
   
        Stack<String> stack1 = new Stack<String> ();
        Stack<String> stack2 = new Stack<String> ();
        for (String str:strs){
   
            if (str.equals("undo")) {
   
                if (stack2.size()>0) {
   
                    stack1.push(stack2.pop());//将栈2中的元素压入栈1中
                }
            } else if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱技术的小小林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值