首页 > 奇安信笔试
头像
爱技术的小小林
编辑于 2020-09-02 17:18
+ 关注

奇安信笔试

第一题爬楼梯
import java.util.Scanner;

public class anxin {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        System.out.print(climb(n));
    }
    public static int climb(int n){
        int [] a=new int[n+1];
        if(n==1){
            return 1;
        }
        if(n==2){
            return 2;
        }
        if(n>36||n<=0){
            return 0;
        }
        a[1]=1;
        a[2]=2;
        for(int i=3;i<=n;i++){
            a[i]=a[i-1]+a[i-2];
        }
        return a[n];
    }
}
第二题分房子
三条规则
规则1:每户最少分得一套
规则2:人口多的家庭分的比人口少的多
规则3:人口相同的家庭分的可以不一样
求所有家庭最少分的房子总和
输入:【3,2,4】
输出:5
输入:【4,1,3,3,3】
输出:7
 public static int house (int[] person) {
            if(person==null){
                return 0;
            }
            int n=person.length;
            int [] a=new int[n];
            int res=person[0];
            for(int i=0;i<n;i++){
                res=Math.min(res,person[i]);
            }
            int cnt=0;
            for(int i=0;i<n;i++){
                if(person[i]==res){
                    a[i]=1;
                    cnt=i;
                }
            }
            for(int i=cnt-1;i>=0;i--){
                if(person[i]>person[i+1]){
                    if(i+1==cnt){
                        a[i]=2;

                    }
                    a[i]=a[i+1]+1;
                }
                else if(person[i]<person[i+1]){
                        a[i]=a[i+1]-1;
                }
                else{
                    a[i]=1;
                }
            }
            for(int i=cnt;i<n-1;i++){
                if(person[i]>person[i+1]){
                    a[i+1]=a[i]+1;
                }
                else if(person[i]<person[i+1]){
                    if(i==cnt){
                        a[i+1]=2;
                    }
                    a[i+1]=a[i]+1;
                }
                else{
                    a[i+1]=1;
                }
            }
            int sum=0;
            for(int i=0;i<n;i++){
                sum+=a[i];
            }
            return sum;
        }



全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐