首页 > 2021.08.07 奇安信笔试经验
头像
Silviayun2021
发布于 2021-08-07 17:12
+ 关注

2021.08.07 奇安信笔试经验

40分的单选+20分的多选
上述选择题都是一些基础知识+读代码选择题,大家的得分率大概都差不多
40分手撕代码 两道题 都很简单 我的完成度 100% 100% 下面是代码
第一题
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param height int整型vector 舞蹈员身高的一维数组
     * @return int整型
     */
    int TeamNums(vector<int>& height) {
        int n=height.size(), res=0;
        for(int j=0;j<n;j++)
            for(int k=j+1;k<n;k++)
                for(int l=k+1;l<n;l++){
                    if(height[j]>height[k] && height[k]>height[l])
                        res++;
                    if(height[j]<height[k] && height[k]<height[l])
                        res++;
                }
        return res;
    }
};
第二题
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param grid int整型vector<vector<>> 为n*m 的二维数组
     * @return int整型
     */
    int getMaximumResource(vector<vector<int> >& grid) {
        int max=0, tmp=0, row=grid.size(), col=0;
        if(row>0)
            col=grid[0].size();
        for(int i=0;i<row;i++)
            for(int j=0;j<col;j++){
                if(grid[i][j]!=0)
                    tmp=judge(grid, i, j, row, col);
                if(tmp>max)
                    max=tmp;
            }
        return max;
    }
    int judge(vector<vector<int> >& grid, int& i, int& j, int& row, int& col){
        int left=j-1, right=j+1, up=i-1, down=i+1;
        int res_current_1=0, res_current_2=0, res_current_3=0, res_current_4=0;
        if((left<0 || grid[i][left]==0) && 
           (right>=col || grid[i][right]==0) && 
           (up<0 || grid[up][j]==0) && 
           (down>=row || grid[down][j]==0))
            return grid[i][j];
        int tmp=grid[i][j];
        grid[i][j]=0;
        if(left>=0 && grid[i][left]!=0)
            res_current_1=tmp+judge(grid, i, left, row, col);
        if(right<col && grid[i][right]!=0)
            res_current_2=tmp+judge(grid, i, right, row, col);
        if(up>=0 && grid[up][j]!=0)
            res_current_3=tmp+judge(grid, up, j, row, col);
        if(down<row && grid[down][j]!=0)
            res_current_4=tmp+judge(grid, down, j, row, col);
        grid[i][j]=tmp;
        int max=0;
        max=res_current_1;
        if(res_current_2>max)
            max=res_current_2;
        if(res_current_3>max)
            max=res_current_3;
        if(res_current_4>max)
            max=res_current_4;
        return max;            
    }
};



全部评论

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

推荐话题

相关热帖

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

热门推荐