java - 这是一个 codevita 问题,它在提交时给了我错误的答案。任何人都可以检查我在方法中做错了什么
问题描述
问题如下 棋盘游戏 问题描述 给你一个 N x N 方格。除左上角外的每个正方形都用一个正整数填充。您从得分为 0 的左上角开始,然后通过向右移动一格或向下移动一格来移动到右下角。当您移动到新方块时,您的分数变为 [S/2] + k,其中 S 是您前一个方块的分数,k 是当前方块中写入的数字。在上面,[x]是不大于x的最大整数。因此,[5] 是 5,而 [5.5] 也是 5。
编写一个程序,找出可以退出网格的最小分数。
约束 4 <= N <= 30
每个方格中的数字 <= 1000
输入格式 第一行包含一个整数 N,表示网格的大小
接下来的 N 行,每行都有 N 个空格分隔的整数,给出写在网格连续行上的数字
输出您可以退出网格的最小分数
时间限制 1
说明例 1
输入
输入
4
0 3 9 6
1 4 4 5
8 2 5 4
1 8 5 9
输出
12
解释
N=4。分数集如给定。4 X 4 分数如下所示
一组可能的动作是向下,向右,向下,向右,向右,向下。
对应的分数是1、4、4、7、7、12
示例 2
输入
5
0 82 2 6 7
4 3 1 5 21
6 4 20 2 8
6 6 64 1 8
1 65 1 6 4
输出
7
解释
一组可能的移动是向下,向右,向右,向右,向下,向下,向下,向右
`import java.util.Scanner;
public class A_Board_Game {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int[][] board = new int[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
board[i][j] = s.nextInt();
}
}
System.out.println(minscore(board,n));
}
public static int minscore(int[][] a, int n){
int ans = 0,i=0,j=0;
while(i+1<n && j+1<n){
if(a[i+1][j]<a[i][j+1]){
ans = (ans/2) + a[i+1][j];
i = i+1;
// System.out.println("down is "+ans);
}
else{
ans = (ans/2) + a[i][j+1];
j=j+1;
// System.out.println("right is "+ans);
}
}
ans = (ans/2) + a[n-1][n-1];
return ans;
}
}
`
解决方案
// 兄弟,我不知道你的代码有什么问题,但这是我的解决方案 import java.util.Scanner;
公共类 DP_codevita { public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int arr[][]=new int[a][a];
for(int i=0;i<a;i++)
{ for(int j=0;j<a;j++)
{
arr[i][j]=sc.nextInt();
}
}
for(int i=0;i<arr.length;i++)
{ for(int j=0;j<arr[0].length;j++)
{ if(i==0 && j==0)
{
arr[i][j]=0;
}
else if(i==0 && j!=0)
{
arr[i][j]= (int)Math.floor((arr[i][j-1]/2)+arr[i][j]);
}
else if(i!=0 && j==0)
{
arr[i][j]= (int)Math.floor((arr[i-1][j]/2)+arr[i][j]);
}
else
{
int min=Math.min(arr[i][j-1], arr[i-1][j]);
arr[i][j]= (int)Math.floor((min/2)+arr[i][j]);
}
}
}
System.out.println(arr[a-1][a-1]);
} }
推荐阅读
- java - 没有任何唯一ID的多个div
- typescript - Next.js typescript自定义文档错误:TypeError:没有'new'就无法调用类构造函数文档
- android - Android 找不到活动 ActivityRecord 的主窗口
- javascript - 使用 ibm watson 在聊天机器人中发送获取请求时如何解决错误?
- javascript - 如何使用 Apps-Script 在 Google 电子表格列中标记/突出显示多种货币
- django - 在 Django rest 框架中发出 put 请求时出现逻辑错误
- reactjs - React history.push() 正在更新 url 但不在浏览器中导航到它?
- node.js - _.omit 在 monogdb 对象上使用时不返回预期值
- solidity - 有人用过 The Graph 吗?我在创建子图时遇到问题
- android - 在 Android 上执行周期性任务的最可靠方法