1205. 买不到的数目 - AcWing题库
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
System.out.print((n - 1) * (m - 1) - 1);
}
}
1211. 蚂蚁感冒 - AcWing题库![](https://i-blog.csdnimg.cn/blog_migrate/2cb17856a5bf9f3cee2c106c19dbec09.png)
import java.util.*;
import javax.naming.InterruptedNamingException;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[110];
int right = 0;//右边向左走
int left = 0;//左边向右走
for(int i = 0; i < n; i ++) {
a[i] = sc.nextInt();
if(Math.abs(a[i]) > Math.abs(a[0]) && a[i] < 0) right ++;
if(Math.abs(a[i]) < Math.abs(a[0]) && a[i] > 0) left ++;
}
int res = 1;
if(a[0] > 0) {
if(right > 0) res += left;
res += right;
}else {
if(left > 0) res += right;
res += left;
}
System.out.print(res);
}
}
2. 01背包问题 - AcWing题库
二维
import java.util.*;
public class Main{
static int N = 1010;
static int[][] f = new int[N][N];
static int n, m;
static int[] v = new int[N];
static int[] w = new int[N];
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
for(int i = 1; i <= n; i ++) {
v[i] = sc.nextInt();
w[i] = sc.nextInt();
}
for(int i = 1; i <= n; i ++) {
for(int j = 0; j <= m; j ++) {
f[i][j] = f[i - 1][j];
if(v[i] <= j) f[i][j] = Math.max(f[i][j], f[i - 1][j - v[i]] + w[i]);
}
}
System.out.print(f[n][m]);
}
}
一维优化
import java.util.*;
public class Main{
static int N = 1010;
static int[] f = new int[N];
static int n, m;
static int[] v = new int[N];
static int[] w = new int[N];
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
for(int i = 1; i <= n; i ++) {
v[i] = sc.nextInt();
w[i] = sc.nextInt();
}
for(int i = 1; i <= n; i ++) {
for(int j = m; j >= v[i]; j --) {
f[j] = Math.max(f[j], f[j - v[i]] + w[i]);
}
}
System.out.print(f[m]);
}
}
1015. 摘花生 - AcWing题库
import java.util.*;
public class Main{
static int N = 110;
static int[][] f = new int[N][N];
static int[][] a = new int[N][N];
static int r, c;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
while(T -- > 0) {
r = sc.nextInt();
c = sc.nextInt();
for(int i = 1; i <= r; i ++) {
for(int j = 1; j <= c; j ++) {
a[i][j] = sc.nextInt();
}
}
f[1][1] = a[1][1];
for(int i = 1; i <= r; i ++) {
for(int j = 1; j <= c; j ++) {
f[i][j] = Math.max(f[i - 1][j] + a[i][j], f[i][j - 1] + a[i][j]);
}
}
System.out.println(f[r][c]);
}
}
}
895. 最长上升子序列 - AcWing题库
import java.util.*;
public class Main{
static int N = 1010;
static int[] f = new int[N];
static int[] a = new int[N];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 0; i < n; i ++) {
a[i] = sc.nextInt();
}
for(int i = 0; i < n; i ++) {
f[i] = 1;
for(int j = 0; j < i; j ++) {
if(a[i] > a[j]) f[i] = Math.max(f[i], f[j] + 1);
}
}
int res = 0;
for(int i = 0; i <= n; i ++) {
res = Math.max(res, f[i]);
}
System.out.print(res);
}
}
1212. 地宫取宝 - AcWing题库
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = 55;
int[][][][] f = new int[N][N][13][14];
int[][] a = new int[N][N];
int n = sc.nextInt();
int m = sc.nextInt();
int k = sc.nextInt();
int mod = 1000000007;
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= m; j ++) {
a[i][j] = sc.nextInt();
a[i][j] ++;
}
}
f[1][1][0][0] = 1;
f[1][1][1][a[1][1]] = 1;
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= m; j ++) {
if(i == 1 && j == 1) continue;
for(int u = 0; u <= k; u ++) {//数量
for(int v = 0; v <= 13; v ++) {//价值
f[i][j][u][v] = (f[i][j][u][v] + f[i - 1][j][u][v]) % mod;
f[i][j][u][v] = (f[i][j][u][v] + f[i][j - 1][u][v]) % mod;
if(u > 0 && v == a[i][j]) {
for(int c = 0; c < v; c ++) {
f[i][j][u][v] = (f[i][j][u][v] + f[i - 1][j][u - 1][c]) % mod;
f[i][j][u][v] = (f[i][j][u][v] + f[i][j - 1][u - 1][c]) % mod;
}
}
}
}
}
}
int res = 0;
for(int i = 0; i <= 13; i ++) res = (res + f[n][m][k][i]) % mod;
System.out.print(res);
}
}