矩阵归零消减
給定一個(gè)n*n的矩陣(3 <= n <= 100,元素的值都是非負(fù)整數(shù))。通過(n-1)次實(shí)施下述過程,可把這個(gè)矩陣轉(zhuǎn)換成一個(gè)1*1的矩陣。每次的過程如下:
首先對(duì)矩陣進(jìn)行行歸零:即對(duì)每一行上的所有元素,都在其原來值的基礎(chǔ)上減去該行上的最小值,保證相減后的值仍然是非負(fù)整數(shù),且這一行上至少有一個(gè)元素的值為0。
接著對(duì)矩陣進(jìn)行列歸零:即對(duì)每一列上的所有元素,都在其原來值的基礎(chǔ)上減去該列上的最小值,保證相減后的值仍然是非負(fù)整數(shù),且這一列上至少有一個(gè)元素的值為0。
然后對(duì)矩陣進(jìn)行消減:即把n*n矩陣的第二行和第二列刪除,使之轉(zhuǎn)換為一個(gè)(n-1)*(n-1)的矩陣。
下一次過程,對(duì)生成的(n-1)*(n-1)矩陣實(shí)施上述過程。顯然,經(jīng)過(n-1)次上述過程, n*n的矩陣會(huì)被轉(zhuǎn)換為一個(gè)1*1的矩陣。
請(qǐng)求出每次消減前位于第二行第二列的元素的值。
輸入第一行是一個(gè)整數(shù)n。
接下來n行,每行有n個(gè)正整數(shù),描述了整個(gè)矩陣。相鄰兩個(gè)整數(shù)間用單個(gè)空格分隔。輸出輸出為n行,每行上的整數(shù)為對(duì)應(yīng)矩陣歸零消減過程中,每次消減前位于第二行第二列的元素的值。樣例輸入
樣例輸出
3 0 0#include <iostream> #include <algorithm> using namespace std; int main() {int a[101][101];int n, m;cin >> n;m = n;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin >> a[i][j];for(int i=1;i<=n;i++){cout<<a[2][2]<<endl;for(int i=1;i<=m;i++){int x = 0x7FFFFFFF;for(int j=1;j<=m;j++)x=min(x,a[i][j]);for(int j=1;j<=m;j++)a[i][j]-=x;}for(int i=1;i<=m;i++){int x = 0x7FFFFFFF;for(int j=1;j<=m;j++)x=min(x,a[j][i]);for(int j=1;j<=m;j++)a[j][i]-=x;}for(int i=2;i<=m-1;i++)for(int j=1;j<=m;j++)a[i][j]=a[i+1][j];for(int j=2;j<=m;j++)for(int i=1;i<=m-1;i++)a[i][j]=a[i][j+1];m--;} }
轉(zhuǎn)載于:https://www.cnblogs.com/fangzheng-nie/p/9979071.html
總結(jié)
- 上一篇: 《针灸甲乙经》中是如何将经脉与腧穴理论相
- 下一篇: java日常规范