已知一個矩陣,將矩陣中和值最大的一行元素與首行互換

qq_51719952發表於2020-12-07

第二次上機作業(1)
//輸入任意矩陣及行交換
//for語句,陣列的應用

#include<iostream>
#include<cmath>
using namespace std;

int a[1000][1000];//用於後面矩陣的構建
int b[1000];//交換行的容器,這裡也可用字母代替,不一定用陣列
int n,m;//n為行數,m為列數
int maxi,maxsum,sum;//用於行元素的求和及大小比較,maxi為和最大行

int main(){
	cin>>n>>m;
	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++){
		sum=0;
		for(int j=1;j<=m;j++){
			sum+=a[i][j]}//計算各行元素之和
		if(maxsum<sum){
			maxsum=sum;
			maxi=i;
		}
	}//找到元素之和最大的一行
	for(int j=1;j<=m;j++){
		b[j]=a[1][j];
		a[1][j]=a[maxi][j];
		a[maxi][j]=b[j];
	}//交換行
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<a[i][j]<<endl;
			}
		}//輸出最終結果
		return 0;
	}
		
		

相關文章