题目
思路:将每行看成一个数,然后套上最大上升子序列得到模板
AC代码:
import java.io.*;
import java.math.*;
import java.util.*;
public class 练习 {
static Scanner sc=new Scanner(System.in);
static int a[][];
static int n,m,ans=Integer.MAX_VALUE;
public static void main(String[] args) {
n=sc.nextInt();
m=sc.nextInt();
a=new int [n+1][m+1];
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
a[i][j]=sc.nextInt();
}
}
int dp[]=new int [n+1];
for(int i = 1; i <= n; ++i)
dp[i] = 1;
for(int i = 2; i <= n; ++i){
for(int j = 1; j < i; ++j){
boolean flag = false;
for(int k = 1; k <= m; ++k){
if(a[i][k] >= a[j][k]){
flag = true;
break;
}
}
if(!flag) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
}
int ans = 0;
for(int i = 1; i <= n; ++i) {
ans = Math.max(ans, dp[i]);
}
System.out.println(n-ans);
}
}