蛇形填数,给出N*N的矩阵,要求用程序填入下列蛇形排列形式得数(例如N=5)则形成
1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25
c语言 c++ 蛇形填数
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 黑马星云 2021-07-05 08:56关注
首先输入一个整数表示矩阵的边长,再输入一个数(1~3),2就是此题,望采纳
!!#include <iostream> #include <stdio.h> using namespace std; /* 本质上是一个按照规律构建二维矩阵的问题 */ void Inversion(int n) { //只有一个数的时候输出1 if (n == 1) { printf("1"); } //动态生成一个二维数组 int **shouList = new int*[n];//开辟行 for (int i = 0; i < n; i++) shouList[i] = new int[n]; //开辟列 int max = n*n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { shouList[i][j] = max; max--; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%4d", shouList[i][j]); } printf("\n"); } printf("\n"); } void Snake(int n) { //只有一个数的时候输出1 if (n == 1) { printf("1"); } //动态生成一个二维数组 int **shouList = new int*[n];//开辟行 for (int i = 0; i < n; i++) shouList[i] = new int[n]; //开辟列 int row = 0, col = 0; int Filler = 1; int loop = 0; for (size_t loop = 0; loop < 2*n-1; loop++) { row = (loop < n) ? 0 : loop - (n - 1); col = (loop < n) ? loop : (n - 1); for (int j = row; j <= col; j++) (loop % 2) ? (shouList[j][loop - j] = Filler++) : (shouList[loop - j][j] = Filler++); } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%4d", shouList[i][j]); } printf("\n"); } printf("\n"); } void Rotation(int n) { //只有一个数的时候输出1 if (n == 1) { printf("1"); } //动态生成一个二维数组 int **shouList = new int*[n];//开辟行 for (int i = 0; i < n; i++) shouList[i] = new int[n]; //开辟列 int Filler = 1; int head = 0, tail = n-1; int row = 0, col = 0; for (int i = 0; i <= n / 2; i++) { if (head == tail) { shouList[head][tail] = Filler; } for (row = head; row < tail; row++) { shouList[row][col] = Filler++; } for (col = head; col < tail; col++) { shouList[row][col] = Filler++; } for (row = tail; row > head; row--) { shouList[row][col] = Filler++; } for (col = tail; col> head; col--) { shouList[row][col] = Filler++; } head++; tail--; row = head; col = head; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%4d", shouList[i][j]); } printf("\n"); } printf("\n"); } int main() { int n = 0,choose = 0; cout << "Please input the dimension you want to Constructing the Matrix :" << endl; cin >> n; cout << "Please choose the Matrix:" << endl; cout << "1. Inversion ;" << endl; cout << "2. Snake ;" << endl; cout << "3. Rotation ;" << endl; cin >> choose; switch (choose) { case 1: Inversion(n); break; case 2: Snake(n); break; case 3: Rotation(n); break; default: cout << "Error!" << endl; break; } system("pause"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 我想在一个软件里添加一个优惠弹窗,应该怎么写代码
- ¥15 fluent的在模拟压强时使用希望得到一些建议
- ¥15 STM32驱动继电器
- ¥15 Windows server update services
- ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
- ¥15 模糊pid与pid仿真结果几乎一样
- ¥15 java的GUI的运用
- ¥15 Web.config连不上数据库
- ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
- ¥15 怎么配置广告联盟瀑布流