SDOJ:小鑫找不着北(矩阵转置)

来源:互联网 发布:字体渲染软件 编辑:程序博客网 时间:2024/05/16 08:59

问题及代码:

/** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 文件名称:sdoj.cpp* 作    者:李楠* 完成日期:2015年2月5日* 版 本 号:v1.0** 问题描述:小鑫脑子很笨,不分方向,给他一幅用色块拼成的画,他总是能有一种特殊的方法来看。            正方形的画,在小鑫的眼里,会被按对角线进行对称,如图:            那么问题来了,给你一幅画,你能算出这幅画在小鑫脑子里是什么模样么?* 输入描述:多组输入。 对于每组输入,首先输入一个N(1 <= N <=15),表示一幅画是有N*N的色块组成的。每个色块上有一个值m(0 <= m <= 100)。* 程序输出:输出只有一个数,为小鑫能最多能获得多少的糖果。*/#include <iostream>using namespace std;int main(){    void move(int *,int );    int n;    int i,*p;    int j;    while(cin>>n&&n>=1&&n<=15)    {        int a[n][n];        for(i=0;i<n;i++)            for(j=0;j<n;j++)            cin>>a[i][j];        p=&a[0][0];        move(p,n);        for(i=n-1;i>=0;i--)            for(j=n-1; j>=0; j--)                {                    if(j==0)                        cout<<a[i][j]<<endl;                    else                        cout<<a[i][j]<<" ";                }    }    return 0;}void move(int *pointer,int n){    int i,j,t;    for(i=0;i<n;i++)        for(j=i;j<n;j++)    {        t=*(pointer+n*i+j);        *(pointer+n*i+j)=*(pointer+n*j+i);        *(pointer+n*j+i)=t;    }}

如图:


运行结果:


知识点总结:

哇塞矩阵转换都忘了,翻课本才找到指针这一部分的矩阵转置,我的妈呀,还有多组输入还有不拉不拉,总之做出来很嗨森~

学习心得:

习大大说年轻人不要总熬夜~我去睡觉~吼吼~


0 0