首页 > 8.25完美世界游戏开发Java(AK
头像
xust_Hangc
编辑于 2020-08-26 11:13
+ 关注

8.25完美世界游戏开发Java(AK

第一题

猴子吃桃问题,每一天吃一半多一个,已知n天后剩余1个,问初始值。
例如:输入2 则初始值为10.  10 第一天吃一半 5 + 1个,剩余4个,第二天吃一半2+1个 剩余1个;
//直接递归即可
if(n == 0)
        return 1;
return (calNum(n - 1) + 1) * 2;

第二题

给定一个方格。90*90 以原点为中心。 平均分成9个小宫格,大概如图所示吧
然后给你一个圆的圆心(保证圆心在整个大正方形内部)和半径,询问这个圆覆盖了几个小正方形。

我瞎做的,跑每个小正方形的每个整数点,判断该点到圆心与半径的大小关系,如该点到圆心距离小于半径则认为覆盖了。
static int calSquareNum(double x, double y, double r) {
        int[] pointX = new int[]{0, 30, 60, 90};
        int[] pointY = new int[]{0, 30, 60, 90};
        int ans = 0;
        for(int i = 0; i < 3; i++){
            for(int j = 0; j < 3; j++){
                demo:
                for(int X = pointX[i]; X <= pointX[i + 1]; X++){
                    for(int Y = pointY[j]; Y <= pointY[j + 1]; Y++){
                        if(Math.sqrt((Math.pow(X - x, 2)) + Math.pow(Y - y, 2)) < r){
                            ans++;
                            break demo;
                        }
                    }
                }
            }
        }
        return ans;
    }

第三题

给定两个数组,一个为入栈序列,一个为出栈序列。询问这个出栈序列是否合法。

直接模拟即可。就顺序读取入栈序列判断是否满足,不满足则入栈。

static boolean isValidPop(int[] push, int[] pop) {
        Stack<Integer> left = new Stack<>();
        boolean flag = true;
        int index = 0;
        for(int i = 0; i < pop.length; i++){
            if(!left.isEmpty() && left.peek() == pop[i]){
                left.pop();
                continue;
            }
            if(index < push.length && push[index] == pop[i]){
                index++;
                continue;
            }
            boolean fflag = true;
            while(index < push.length){
                if(pop[i] == push[index]){
                    index++;
                    fflag = false;
                    break;
                } else {
                    left.add(push[index++]);
                }
            }
            if(fflag){
                flag = false;
                break;
            }
        }
        return flag;
    }

第四题

给定一个数组,全排列这个数组,求满足相邻两位的是可以开方的个数。


因为C++的STL内置了全排列 所以偷懒直接用C++写了。
#include <bits/stdc++.h>
using namespace std;

int a[100010];

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    int ans = 0;
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> a[i];
    }
    sort(a, a + n);
    do{
            bool flag = true;
            for(int i = 1; i < n; i++){
                int val = a[i] + a[i - 1];
                int tmpVal = sqrt(val);
                if(val != tmpVal * tmpVal){
                    flag = false;
                    break;
                }
            }
            if(flag){
                ans++;
            }
    }while(next_permutation(a, a + n));
    cout << ans << endl;
    return 0;
}


游戏体验良好2233333

全部评论

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

相关热帖

近期热帖

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

近期精华帖

热门推荐