0
点赞
收藏
分享

微信扫一扫

计蒜客练习

生活记录馆 2022-08-04 阅读 57


题目:跳跃游戏二

题目地址:https://nanti.jisuanke.com/t/20

AC代码:

import java.util.Arrays;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);
int[] num = new int[110];
int[] dp = new int[110];
while (in.hasNextInt()) {
int n = in.nextInt();
for (int i=1; i<=n; i++) {
num[i] = in.nextInt();
}
Arrays.fill(dp, 0);
for (int i=1; i<=n; i++) {
for (int j=1; j<=num[i]; j++) {
if (i + j > n)
continue;
if (dp[i+j] > dp[i]+1 || dp[i+j] == 0) {
dp[i+j] = dp[i] + 1;
}
}
}
System.out.println(dp[n]);
}
}

}


题目:无脑博士的试管们

题目地址:https://nanti.jisuanke.com/t/31

思路:3个水瓶之间互相倒,bug找的我心碎啊,不招了

错误代码:

import java.util.Arrays;
import java.util.Scanner;

public class Main {

static int[][][] visit = new int[25][25][25];
static int a,b,c;

public static void main(String[] args) {

int[] temp = new int[22];
Scanner in = new Scanner(System.in);
a = in.nextInt();
b = in.nextInt();
c = in.nextInt();
dfs(0,0,c);
int start = 0;
for (int i=0; i<=b; i++) {
for (int j=0; j<=c; j++) {
if (visit[0][i][j] == 1) {
temp[start] = j;
start++;
}
}
}
Arrays.sort(temp,0,start);
System.out.print(temp[0]);
for (int i=1; i<start; i++) {
System.out.print(" " + temp[i]);
}
System.out.println();
}

private static void dfs(int x, int y, int z) {
if (visit[x][y][z] == 1)
return;
if (visit[x][y][z] == 0) {
//System.out.println(x + " " + y + " " + z);
visit[x][y][z] = 1;
}
/*将a中的倒向b*/
//a将b倒满
if (x >= b - y) {
//System.out.println("a将b倒满");
dfs(x-(b-y),b,z);
//将a倒空
} else if (x < b - y) {
//System.out.println("a倒b,将a倒空");
dfs(0,y+x,z);
}
/*将b中的倒向a*/
//b将a倒满
if (y >= a - x) {
//System.out.println("b将a倒满");
dfs(a,y-(a-x),z);
//将b倒空
} else if (y < a - x) {
//System.out.println("b倒a,将b倒空");
dfs(x+y,0,z);
}
/*将a中的倒向c*/
//a将c倒满
if (x >= c - z) {
//System.out.println("a将c倒满");
dfs(x-(c-z),y,c);
//将a倒空
} else if (x < c - z) {
//System.out.println("a倒c,将a倒空");
dfs(0,y,z+x);
}
/*将c中的倒向a*/
//c将a倒满
if (z >= a - x) {
//System.out.println("c将a倒满");
dfs(a,y,z-(a-x));
//将c倒空
} else if (z < a - x) {
System.out.println("c倒a,将c倒空");
dfs(x+z,y,0);
}
/*将b中的倒向c*/
//b将c倒满
if (y >= c - z) {
//System.out.println("b将c倒满");
dfs(x,y-(c-z),c);
//将b倒空
} else if (y < c - z) {
//System.out.println("b倒c,将b倒空");
dfs(x,0,z+y);
}
/*将c中的倒向b*/
//c将b倒满
if (z >= b - y) {
//System.out.println("c将b倒满");
dfs(x,b,z-(b-y));
//将c倒空
} else if (z < b - y) {
//System.out.println("c倒b,将c倒空");
dfs(x,y+z,0);
}
}

}



举报

相关推荐

0 条评论