打印方阵1
题目:
编写一个算法,给定一个一维数组,任意输入6个整数,如5 7 4 8 9 1,然后建立一个具有以下内容的方阵,并打印出来
5 7 4 8 9 1
1 5 7 4 8 9
91 5 7 4 8
89 1 5 7 4
48 9 1 5 7
74 8 9 1 5
读者先想想,我的分析在很下面
分析:
初看这个方阵会觉得又简单又复杂,规律很容易发现,每次换行时,屁股跑到头上去。
但如何最简单的打印出来呢?难道必须每次换行时,整个数组从新排列吗?只要看到我下面的图形,你会马上找到最佳答案:
5 7 4 8 9 15 7 4 8 9 1
5 7 4 8915 7 4 8 91
5 7 489 15 7 4 89 1
5 748 9 15 7 48 9 1
5 74 8 9 15 74 8 9 1
574 8 9 1574 8 9 1
红色字就是需要打印的内容,因此最快速的方法就是申请一个2倍大小的数组。
算法:
比较简单,就用C++了
void Print(int * arr)
{
int * newArr = new int[12];
int i = 0;
for(ii = 0;i<6;i++)
{
newArr[i] = arr[i];
}
for(i = 6;i<12;i++)
{
newArr[i] = arr[i-6];
}
i = 6;//其实打印位置在第6个,直到其实位置变为0,则打印完毕
while(i>0)
{
for(int j = i;j<i+6;j++)
{
cout<<newArr[j]<<"\t";
}
cout<<endl;
i--;
}
}
原文链接: https://www.cnblogs.com/xiao-wei-wei/archive/2013/03/15/2960635.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/80724
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!