200题计划(6)

目录

1.Fibonacci数列

2.不要二


1.Fibonacci数列

Fibonacci数列_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目,配有官方题解,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/18ecd0ecf5ef4fe9ba3f17f8d00d2d66?tpId=85&&tqId=29846&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking

①题目示例:

②方法解析:

a.我们可以发现能够在一个范围里,通过改变f3,f2,f1来使得斐波那契数一直处于这三个数之列

b.在理解清楚题意后,我们可以知道,当给出一个数后,要将它变为斐波那契数有两种办法,一个是向左递减,第二个是向右递增,而题目要求需要求的最少步数则很显然是将两个取较小值。

举个例子:

 c.我们就需要来判断当输入的n=斐波那契数的时候,它是属于left,还是属于right。我们通过下面的代码很容易知道它是属于right(这里自己想一下,很容易明白的)

扫描二维码关注公众号,回复: 13781045 查看本文章

 代码:

import java.util.*;
public class Main{
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int f1=0;
        int f2=1;
        while(n>f2){
           int f3=f2+f1;
            f1=f2;
            f2=f3;
        }//当此处循环退出的时候,n<=f2,这个时候,就说明f2就是右边的项,而F1就是左边的一项
        int min=Math.min(n-f1,f2-n);
        System.out.println(min);
    }
}

2.不要二

不要二_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目,配有官方题解,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/1183548cd48446b38da501e58d5944eb?tpId=85&&tqId=29840&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking

①题目示例:

②方法解析:

a.由题意,我们首先可以知道这是一个二维数组

b.然后我们将平方根转变为平方后即为:
((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))=4
而能够满足这个等式只有下面5种情况
0+4=4
1+3=4
2+2=4
3+1=4
4+0=4
而因为每个数都是整数,所以我们排除了3种情况,只剩下
0+4=4
4+0=4这两种情况
即当x1=x2时,y1=y2+2;
当y1=y2时,有x1=x2+2;

这就说明当某处放了蛋糕后,它的这两个位置就不能放入蛋糕。

c.我们初始将整个数组的值置为0,然后每存放一个蛋糕用一个count计数,不能放蛋糕的地方置为1

代码:

import java.util.*;
public class Main{
public static void main(String[]args){
 Scanner sc=new Scanner(System.in);
    int W=sc.nextInt();
    int H=sc.nextInt();
    int count=0;
    //把二维数组所有的值的大小置为0,当它能存放蛋糕时,count++;不能放蛋糕的位置就置为1
    int [][]tmp=new int[W][H];
    for(int i=0;i<W;i++){
        for(int j=0;j<H;j++){
            if(tmp[i][j]==0){
                count++;
         //当此处已经放了蛋糕,那么距离它的欧几里得距离就不能超过2
            //情况①:同i;j+2,判断j是否越界
                if(j+2<H){
                    tmp[i][j+2]=1;
                }
                //情况②:同j,i+2;判断i是否越界
                if(i+2<W){
                    tmp[i+2][j]=1;
                }
            }
        }
    }
    System.out.println(count);
}
}

猜你喜欢

转载自blog.csdn.net/weixin_58850105/article/details/123992753
今日推荐