网易算法笔试题

网易笔试十字斩击

游戏工程师小明购买了VR设备之后爱上了体感游戏,而最近他把他的业余时间花在了一
款叫十字斩的游戏
里。当你戴上VR眼镜启动游戏后,先选择-首音乐,然后会发现有一一个NN的方阵呈现在
你的眼前,方阵的
每个格子上都有一个数字。然后伴随着音乐节拍,你需要按照时机对方阵进行一-次十字斩
击(同时斩掉- -行
和一列,而且选好了行列后不能斩到选定行列之外的格子)。斩击完了之后,矩阵会收缩
成一个(N

  1. . (N-1) 的方阵。
    特别的,若该次十字斩斩到的格子数字和是本次所有十字可能里最大的,则会获得-一个
    Perfect, 如果N次十
    字斩都是Perfect,则可以获得FullCombo的成就。但小明的心算能力不行,至今还未能获
    得FullCombo的成
    就。所幸初始数字方阵与音乐是一-对应的, 所以小明可以通过预先计算十字斩的位置然
    后背下来,游玩的
    时候根据记忆去进行十字斩位置的选择即可。
    小明上了一天班已经不想写代码了,所以他拜托你来写一-个程序为他计算出十字斩的方
    |案。
    输入描述:
    | 每个输入数据包含一一个测试点。
    第一行为一个正整数N,方阵的大小。0 < N <= 500
    接下来N行,每行有N个数字,第1行第j个数字表示方阵1行j列上的数字是多少,对于每
    个数字,保证是非负整
    数且范围在[0, 65535]内。
    输出描述:
    输出N行,每行两个整数n, m,第i行的n, m表示第1次斩击时,斩击第n行和第m列的数
    字和是最大的。注意
    如果此时有多种方案,输出n最小的(更小的数字更方便小明记忆),如果还有多种方
    案,输出m最小的。
    而且n、m的坐标是对于当前的(N + 1 - i) 大小方阵而言,并不是对于一开始N*N大
    小的方阵而言,更加详
    细的说明参见下方样例说明。
    示例1输入输出示例仅供调试,后台判题数据-般不包含示例
    输入
    3

1 0 0

0 10 10

0 10 10

输出

2 2

1 2

1 1
说明
对于第一轮, 我们斩击2行2列、2行3列、3行2列、3行3列的数字和都是最大的为
30 (行列重复的那个格子的数字并不会被计算两次),但因为希望n和m都最小,所以我们的斩击选择为22
斩击之后剩余的上下左右四个矩阵收缩为新的矩阵
1 0
0 10
此时最优的斩击选择就是1 2 (注意是新方阵下的坐标,而非原方阵的第1行3列)
然后剩下一-个1*1的方阵,只有唯一-的斩击选择1 1了

package com.niukeoffer.a990;

import java.util.Scanner;

public class Main {

    public static void main(String arg[]){
        int i,j;
        Scanner sc =new Scanner(System.in);
        int N=sc.nextInt();
        int[][] arr= new int[N+1][N+1];
        for( i=1;i<=N;i++){
            for( j=1;j<=N;j++){
                arr[i][j]=sc.nextInt();
            }
        }

        int[] row=new int[N+1];
        int[] col=new int[N+1];

        for( i=1;i<=N;i++){
            for( j=1;j<=N;j++){
                arr[0][i]+=arr[j][i];
                arr[i][0]+=arr[i][j];
            }
        }


        for(int ci=0;ci<N;ci++){
            int max=-1,n=1,m=1;
            for( i=1;i<=N;i++){
                if(row[i]==1){
                    continue;
                }
                for( j=1;j<=N;j++){
                    if(col[j]==1){
                        continue;
                    }
                    if(arr[i][0]+arr[0][j]-arr[i][j]>max){
                        max=arr[i][0]+arr[0][j]-arr[i][j];
                        n=i;
                        m=j;
                    }
                }

            }

            int n_out=n,m_out=m;
            for(i=1;i<n;i++){
                if(row[i]==1) {
                    n_out -= 1;
                }
            }
            for(j=1;j<m;j++){
                if(col[j]==1){
                    m_out-=1;
                }
            }
            System.out.println(n_out+" "+m_out);
            row[n]=1;
            col[m]=1;
            for(i=1;i<=N;i++){
                arr[0][i]-=arr[n][i];
                arr[i][0]-=arr[i][m];
            }
        }

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vivo芯片图像算法笔试题主要是针对图像处理与识别领域的问。以下是一个可能的回答: vivo芯片图像算法笔试题通常涉及一些图像处理与识别的技术和方法。这些问旨在考察我们对于图像算法的理解和应用能力。 例如,可能会涉及到图像处理方面的问,比如如何去噪、如何进行图像平滑处理等。针对这些问,我们可以选择适当的算法,比如使用高斯滤波器对图像进行平滑处理,或者应用中值滤波器去噪声。 此外,vivo芯片图像算法笔试题还可能涉及到图像识别方面的问,比如如何进行物体检测和识别。对于这类问,我们可以使用传统的机器学习算法,如支持向量机(SVM)或随机森林(Random Forest),与深度学习算法,如卷积神经网络(CNN)相结合,从而实现准确的物体检测和识别。 在回答vivo芯片图像算法笔试题时,我们需要结合实际问进行思考和分析。还需要展现我们对于图像处理与识别算法的理解和应用能力。我们可以通过提供具体的解决方案、算法选择和优化等来展示我们在这一领域的专业知识和经验。 总之,vivo芯片图像算法笔试题是一个综合考察我们在图像处理与识别领域知识和能力的考。我们需要结合实际问,选择合适的算法和技术,提供具体的解决方案,并展示我们在该领域的专业知识和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值