问题标题: 酷町堂:3820:令人头疼矩阵对折

0
0
已解决
吕梓瑜
吕梓瑜
初级天翼
初级天翼

请问3820的思路是什么?能给一下伪代码吗?

请按以下格式回答,谢谢配合~

@张展嘉 

吕梓瑜在2021-10-16 19:04:55追加了内容

@李显晨 

 


0
已采纳
李显晨
李显晨
中级启示者
中级启示者
全局:
int n,m,x,t;
int a[2050][2050];
主函数:
输入n,m,x;
循环1~n{
    循环1~m{
        输入t;
        a[j][i]=t;
    }
}
交换m,n;
while(x--){
    循环1~n{
        循环1~m/2{
            a[i][j]+=a[i][m+1-j];
        }
    }
    m=(m+1)/2;
    if(m==1) break;
}
循环1~n{
    循环1~m{
        cout<<a[i][j]<<" ";
    }
    cout<<endl;
}

 

0
被禁言 李秉轩
李秉轩
修练者
修练者
#include<bits/stdc++.h>
using namespace std;
int a[2050][2050],b[2050][2050],n,m,x;
int main(){
    //freopen(".in","r",stdin);
    //freopen(".out","w",stdout);
    cin>>n>>m>>x;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>b[i][j];
        } 
    } 
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            a[i][j]=b[j][i];
        } 
    }
    swap(m,n);
    while(x--){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m/2;j++){
                a[i][j]+=a[i][m+1-j];
            } 
        } 
        m=(m+1)/2;
        if(m==1)break;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cout<<a[i][j]<<' ';
        } 
        cout<<endl;
    } 
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

 

0
王文博
王文博
缔造者之神
缔造者之神

核心:

while(x--)
    {
        for(int i=1;i<=m;i++)
        {
            for(int j=1;j<=n/2;j++)
            {
                b[i][j]+=b[i][n+1-j];
            }
        }
        n=n/2+n%2;
    }

望采纳!

0
李显晨
李显晨
中级启示者
中级启示者

不@我?

那我不发了

我要回答