
题目链接
题意:就是在一个矩阵中删去一行和一列,使得剩余的值最小。
题解:首先我们先意识到的是本题应该是没有重复的数的(虽然题目中好像没有说明,但是看了很多的题解好像都没有考虑),然后就是找到最大值和次大值,这里最大值是确定的,但是次大值是不确定的,因为次大值不知道是去掉最大值所在行还是列,所以这里我们要考虑到。在确定最次大值后, 还要进行暴力求是删去最大值的行或列,次大值的行或列。具体的在代码中有详细解释。
下面是AC代码:
#include#include #include #include using namespace std; const int N=1100; int a[N][N]; int main() { int n,m; cin>>n>>m; int x,y; int maxnum=-0x3f3f3f3f; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { cin>>a[i][j]; } } //找到最大值的行列 for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { if(maxnummax2) //去掉的是列 { printf("%d %dn",xx2,y); } else if(max1 max1) max1=a[i][j]; } } for(int i=1;i<=n;i++) { if(i==xx) continue; for(int j=1;j<=m;j++) { if(j==y) continue; if(max2max2) printf("%d %dn",xx,y); else printf("%d %dn",x,yy); } return 0; }
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)