top1编程
← 返回题目
题解

【入门】操场换位置

2 条题解

  • 0
    @ 2026-7-29 20:23:25
    #include<bits/stdc++.h>//#996. 操场换位置
    /*
    	扫描整个二维数组,找到最大值的下标和最小值的下标后进行交换即可
    */
    int a[105][105];
    using namespace std;
    int main(){
    	int n, m, maxi = 1, mini = 1, maxj = 1, minj = 1;
    	cin >> n >> m;
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= m; j++) {
    			cin >> a[i][j];
    			//打擂台找到最大值的下标
    			if (a[i][j] > a[maxi][maxj]) {
    				maxi = i;
    				maxj = j;
    			}
    			//打擂台找到最小值的下标
    			if (a[i][j] < a[mini][minj]) {
    				mini = i;
    				minj = j;
    			}
    		}
    	}
    	swap(a[maxi][maxj], a[mini][minj]);//找到后进行交换
    	//交换完毕后不要忘了输出
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= m; j++) {
    			cout << a[i][j] << " ";
    		}
    		cout << endl;
    	}
    	return 0;
    }
    
    • 0
      @ 2026-7-29 0:18:51
      #include <bits/stdc++.h>
      using namespace std;
      int main(){//#996. 【入门】操场换位置
      	//n行m列
      	int n,m;
      	cin>>n>>m;
      	//2<=n,m<=200
      	int a[205][205]={0};
      	// 二维数组的输入
      	for(int i=1;i<=n;i++){
      		for(int j=1;j<=m;j++){
      			cin>>a[i][j];
      		}
      	}
      	// 在所有数字中 找最大值 最小值
      	int max=0,min=100,c,b,d,e;
      	for(int i=1;i<=n;i++){
      		for(int j=1;j<=m;j++){
      			// a[i][j]
      			// 跟最大值比较
      			if(a[i][j] > max){
      				max=a[i][j];
      				// 记录最大值的下标
      				b=i;
      				c=j;
      			}
      			// 跟最小值比较
      			if(a[i][j] < min){
      				min=a[i][j];
      				// 记录最小值的下标
      				d=i;
      				e=j;
      			}
      		}
      	}
      	// 最大值 a[b][c]   最小值a[d][e] 交换
      	swap(a[b][c],a[d][e]);
      	// 二维数组的输出
      	for(int i=1;i<=n;i++){
      		for(int j=1;j<=m;j++){
      			cout<<a[i][j]<<" ";
      		}
      		cout<<endl;
      	}
          return 0;
      }
      
      • 1