华为机试在线训练_蛇形矩阵(数组)
蛇形矩阵
http://www.nowcoder.com/questionTerminal/649b210ef44446e3b1cd1be6fa4cab5e
/* 本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师 期待与你的思想交流碰撞出智慧的花火 作者:水木清华 2020-05-05 蛇形矩阵 */ //解题思路:笨方法 //蛇形矩阵,顾名思义像蛇摆一样,具有弯曲但连续这个特点; //从矩阵特点来看,就是沿着方阵的主对角线斜向下方向,以及沿着副对角线斜向上,依次递增 1; //从输出矩阵元素的个数来看,总数是一个首项为 1 且公差为 1 的等差数列前 N 项和; //利用等差数列的规律,可以得知,每一行或每一列的数列是一个阶梯级数(相邻两项的差逐渐递增)。 #include <iostream> using namespace std; //输出蛇形矩阵的函数接口 int SerpentineMatrix (int N) { int Column_d = 1; //初始化列间相邻两项的第一个差 int ColumnFirstItem = 1; //列首项 int RowFirstItem = 1; //行首项 //按行顺序输出矩阵元素 for (int i = 1; i <= N; i++) { RowFirstItem = ColumnFirstItem; //将第 1 列的第 i 个元素按顺序拷贝作为第 i 行的首个元素 cout << ColumnFirstItem << ' '; //输出第 i 行的首个元素 ColumnFirstItem += Column_d; Column_d++; //相邻两项的差递增 1 int Row_d = i + 1; //初始化第 i 行元素的行间相邻两项的第一个差 //按列顺序输出第 i 行的矩阵元素 for (int j = i + 1; j <= N; j++) { RowFirstItem += Row_d; cout << RowFirstItem << ' '; //输出第 i 行除首个元素之外的其余元素 Row_d++; //相邻两项的差递增 1 } cout << endl; //第 i 行元素输出结束,换行。 } return 0; } //主函数 int main (){ int N; //矩阵的阶数 N,由于是正整数,故大于或等于 1。 while (cin >> N) { SerpentineMatrix (N); } return 0; }
大厂面试 文章被收录于专栏
分享有用的面试经历,倾吐有心的面试感悟,讲述有趣的面试故事,以飨读者。 常用语言是C++,编程力求规范整洁,题解清晰完整,像写诗一样去写代码。 本专栏文章系「人工智能安全」(微信公众号)原创,转载请联系本文作者。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师,期待与你的思想交流碰撞出智慧的花火。