问题标题: 1129哪错了

0
0
已解决
谈文瑞
谈文瑞
新手光能
新手光能

1129   交换矩阵的行

题目描述 Description

任意给定一个m行n列的矩阵,将第a行和第b行交换,并输出交换后的结果。 (数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列)

输入描述 Input Description

输入为m+1行:
第一行为4个整数,分别为矩阵的行数m、列数n和需要交换的两行a、b,每个整数以一个空格隔开(1≤a≤m≤100;2≤b≤n≤100);
之后的m行为该矩阵的所有m行n列元素,每一行的元素之间用一个空格隔开。

输出描述 Output Description

输出为m行,为交换后的矩阵,每一行的元素之间用一个空格隔开。

样例输入 Sample Input

 

5 4 1 3
1 2 3 4
4 3 2 1
6 7 8 9
9 8 7 6
4 5 6 7

样例输出 Sample Output

 

6 7 8 9
4 3 2 1
1 2 3 4
9 8 7 6
4 5 6 7

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int m,n,a,b,i,j;
    cin>>m>>n>>a>>b;
    int s[m][n];
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            cin>>s[i][j];
        }
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            if(i==a)
            {
                i=b;
            }else
            if(i==b)
            {
                i=a;
            }
            cout<<s[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

哪错了


0
已采纳
郑怡翔
郑怡翔
初级天翼
初级天翼

用swap函数

前面是定义,输入二维数组

核心:

for(j=0;j<n;j++)
    {
        swap(x[a-1][j],x[b-1][j]);
    }

然后输出二维数组

1
被禁言 贾敬波
贾敬波
高级守护
高级守护

你到这个题目就是不会交换嘛,以下为交换的核心代码。

if(a==i)
{
    t=s[a][j];
    s[a][j]=s[b][j];
    s[b][j]=t;
}

你原来的那个直接改变了循环的计数器i,答案是肯定不对的。

0
0
方宇哲
方宇哲
资深守护
资深守护
转换核心代码:
    for(int j=0;j<n;j++ )
    {
        swap(c[a-1] [j],c[b-1] [j]);
    }


swap开头代码《cmath》

顺序是

定义数组 输入 转换核心代码 输出 返回值

0
刘斐
刘斐
高级守护
高级守护

核心代码(交换代码):

for(int i=0;i<n;i++)
    {
        t=s[a-1][i];
        s[a-1][i]=s[b-1][i];
        s[b-1][i]=t;
    }

剩下的就是输入输出了。

0
马佳滢
马佳滢
新手天翼
新手天翼

1、定义 m,n,二维数组a[100行][100列],b,c,jrsz[100];

2、循环输入a二维数组;

3、核心(见下):


循环(定义c12,从1循环到n){
    jrsz[c12]=a[c-1][c12];
    a[c-1][c12]=a[b-1][c12];
    a[b-1][c12]=jrsz[c12];
}

//核心

4、循环输出a二维数组。

 

0
我要回答