-
2020-04-05 20:59:01
#include <iostream> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char** argv) { int n;cin>>n;int a[10][10]={0};int i,j,k,m,x=n-1; a[0][0]=n; for(i=1;i<10;i++){ m=i;k=0; if(i%2!=0) for(m;m>=0;m--) {if(x==0) break; a[k][m]=x;x--;k++; } else{ for( m;m>=0;m--){ if(x==0) break; a[m][k]=x;x--;k++; } } } for(i=0;i<10;i++){ //输出n对应的蛇形矩阵 if(a[i][0]<=0) break; for(j=0;j<10;j++) if(a[i][j]>0) cout<<a[i][j]<<' '; cout<<endl; } return 0; }
更多相关内容 -
C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵
2009-08-16 20:46:44C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之... -
c++蛇形矩阵
2017-08-09 17:42:45以前用c++写的一个蛇形矩阵 -
蛇形矩阵c++实现
2018-05-21 21:46:361. 实验题目蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 【输入】 本题有多组数据,每组数据由一个正整数N组成。(N不大于100) 【输出】 对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间...1. 实验题目
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
【输入】 本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
【输出】 对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
【输入范例】 5
【输出范例】 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11
2. 需求分析
1.该程序编写与运行环境VC++6.0;
2.输入的形式和输入值的范围:输入要求的是整数,范围为[0,100]。输出要求的也是整数,并且(对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格)
3.程序所能达到的功能:
由1开始的自然数依次排列成的一个矩阵上三角形。
4.测试数据:
输入数据有:
5
输出是:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
3.概要设计
要实现以上程序需要定义int数据类型以及整型数组,用for循环和递归算法来实现蛇形矩阵,并且只用一个主函数来实现;
4.详细设计
1.输入数据类型与主函数内数据定义与初始化
#define N 100
intn,i,j,k;
inta[N][N];
2. 输入语句与输出语句的实现
scanf("%d",&n);
printf("%d\t",a[i][j]);
3.for循环的实现
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
{
k=i+j+1;
a[i][j]=k*(k-1)/2+j+1;
}
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
5.调试分析
1:for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
{
k=i+j+1;
a[i][j]=k*(k-1)/2+j+1;
}该程序段的时间复杂度为O(n^2);空间复杂度为O(n^2);
2:for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}该程序段的时间复杂度为O(n^2);空间复杂度为O(1);
3:以上程序在调试时采用了单步跟踪法,可以逐步跟踪程序,首先先初始化数据,再进入1,完成1,再进入2,并输出结果;
6.使用说明
#include <stdio.h>
#define N 100
void main()
{
int n,i,j,k;
int a[N][N];
scanf("%d",&n);
1: for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
{
k=i+j+1;
a[i][j]=k*(k-1)/2+j+1;
}
2: for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
}
以上程序在VC++6.0环境下编写与运行的,该程序采用c语言编程,该程序的输入输出运用的都是整型,并且用for循环和数组来实现,当输入n(n大于0)的数程序开始执行1号for循环,知道i=n结束1号for循环。然后执行2号for循环,逐一把数打印出来当i=n时结束程序;
7.测试结果
-
蛇形矩阵c++程序(数值排列)
2011-08-22 14:28:09基于c++的蛇形矩阵,通过用户输入蛇形矩阵的维数,自动具体输出蛇形排列矩阵 -
蛇形矩阵C++/C实现
2020-06-22 15:00:08#include #include using namespace std; int juz(int n,int x... cout 输入矩阵行列:"; cin >> n; int k; cout ; k = juz(n, x); shuchu(n, x); cout 对角线和为:"; cout ; _getch(); return 0; } 程序运行如下: }#include<iostream>
#include<conio.h>
using namespace std;
int juz(int n,int x[100][100])
{
int a, b;
if (n % 2 != 0) {
a = (n - 1) / 2;
b = a;
x[a][b] = 1;
int w = 2;
while (1) {
for (int i = 1; i < w; i++)x[a][++b] = x[a][b - 1] + 1;
for (int i = 1; i < w; i++)x[--a][b] = x[a + 1][b] + 1;
w++;
for (int i = 1; i < w; i++)x[a][--b] = x[a][b + 1] + 1;
for (int i = 1; i < w; i++)x[++a][b] = x[a - 1][b] + 1;
w++;
if (x[a][b] > (n*n))break;
}
int sum = 0;
for (int i = 0; i < n; i++)sum += x[i][i];
for (int i = 0, j = n-1; i < n || j>0; i++, j--)sum += x[j][i];
sum--;
return sum;
}
else {
a = n / 2;
b = a - 1;
x[a][b] = 1;
int w = 2;
while (1) {
if (x[a][b] > (n*n))break;
for (int i = 1; i < w; i++)x[a][++b] = x[a][b - 1] + 1;
for (int i = 1; i < w; i++)x[--a][b] = x[a + 1][b] + 1;
w++;
for (int i = 1; i < w; i++)x[a][--b] = x[a][b + 1] + 1;
for (int i = 1; i < w; i++)x[++a][b] = x[a - 1][b] + 1;
w++;
}
}int sum = 0;
for (int i = 0; i < n; i++)sum += x[i][i];
for (int i = 0, j = n-1; i < n || j>0; i++, j--)sum += x[j][i];
return sum;
}
void shuchu(int n, int x[100][100])
{
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << x[i][j] << " ";
}cout << endl;
}
}
int main()
{
int n, x[100][100] = { 0 };
cout << "输入矩阵行列:";
cin >> n; int k;
cout << endl;
k = juz(n, x);
shuchu(n, x);
cout << "\n对角线和为:";
cout << k;
_getch();
return 0;}
程序运行如下:
} -
蛇形矩阵(C++)
2021-03-22 09:36:02蛇形矩阵(C++) 文章目录 一.题目 二.思路分析 三.代码实现 四.运行结果蛇形矩阵(C++)
一.题目
输入:
3 3 6 2
输出:
1 2 3 8 9 4 7 6 5 1 2 3 4 5 6 20 21 22 23 24 7 19 32 33 34 25 8 18 31 36 35 26 9 17 30 29 28 27 10 16 15 14 13 12 11 1 2 4 3
二.思路分析
- 从蛇形矩阵中不难发现,它从外圈向内,一圈一圈构成一个n/2的循环。所以我们只需要写出第一圈是怎么形成的即可。
for(i = 0; i < n/2; i++);
- 上
for(j = i; j < n-i; j++) { c++; *(*(num+i)+j) = c; }
- 右
for(j = i+1; j < n-i; j++) { c++; *(*(num+j)+n-i-1) = c; }
- 下
for(j = n-i-2; j >= i; j--) { c++; *(*(num+n-i-1)+j) = c; }
- 左
for(j = n-i-2; j > i; j--) { c++; *(*(num+j)+i) = c; }
- 此外,我们还可以看出,当n为奇数时,矩阵有中心点n*n;当n为偶数时,矩阵没有中心点。
if(n % 2 == 1) *(*(num+n/2)+n/2) = n*n;
- 在函数snake中,定义二维动态数组num,在函数末尾向主函数返回num。
int **snake(int n) { ... int **num = new int *[n]; for(i = 0; i < n; i++) { num[i] = new int [n]; memset(num[i],0,sizeof(int)*n); } ... return num; }
- 在主函数中,定义一个二维数组接受snake函数返回的二维数组,输出结果并释放内存。
int main() { ... int **num; num = snake(n); for(i = 0; i < n; i++) { cout << num[i][0]; for(j = 1; j < n; j++) cout << ' ' << num[i][j]; cout << endl; } for(i = 0; i < n; i++) delete [] num[i]; delete [] num; ... }
三.代码实现
#include <iostream> #include <string.h> using namespace std; int **snake(int n) { int i, j; int c = 0; int **num = new int *[n]; for(i = 0; i < n; i++) { num[i] = new int [n]; memset(num[i],0,sizeof(int)*n); } for(i = 0; i < n/2; i++) { for(j = i; j < n-i; j++) { c++; *(*(num+i)+j) = c; } for(j = i+1; j < n-i; j++) { c++; *(*(num+j)+n-i-1) = c; } for(j = n-i-2; j >= i; j--) { c++; *(*(num+n-i-1)+j) = c; } for(j = n-i-2; j > i; j--) { c++; *(*(num+j)+i) = c; } } if(n % 2 == 1) *(*(num+n/2)+n/2) = n*n; return num; } int main() { int t; cin >> t; while(t--) { int n, i, j; int **num; cin >> n; num = snake(n); for(i = 0; i < n; i++) { cout << num[i][0]; for(j = 1; j < n; j++) cout << ' ' << num[i][j]; cout << endl; } for(i = 0; i < n; i++) delete [] num[i]; delete [] num; } return 0; }
四.运行结果
-
蛇形矩阵C++
2022-05-05 21:55:38小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和. ... -
C++蛇形矩阵
2020-05-31 21:35:54蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 输入 本题有多组数据,每组数据由一个正整数N组成。(N不大于100) 输出 对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角... -
C++——蛇形矩阵
2020-04-17 22:05:53这篇专栏记录的是如何打印蛇形矩阵,效果如下,用一个二维数组即可实现。 输出结果: 1 2 6 7 15 16 28 29 45 46 66 67 91 3 5 8 14 17 27 30 44 47 65 68 90 92 4 9 13 18 26 31 43 48 64 69 89 93 114 ... -
C/C++实现蛇形矩阵(超详解)【沈七】
2022-01-05 12:14:03C/C++实现蛇形矩阵(超详解) -
C++实现蛇形矩阵
2019-12-12 20:35:28C++实现蛇形矩阵 实现下图形式的蛇形矩阵 bool flag = 0; //0表示左下方向, 1表示右上方向 int i = 0, j = 0; int k = 1; while (k <= n*n) { R2[i][j] = k; if (!flag) //如果当前向左下走 { ... -
HJ35 蛇形矩阵 C++解法
2022-03-02 22:15:21蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 例如,当输入5时,应该输出的三角形为: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 请注意本题含有多组样例输入。 输入描述: 输入正整数N(N不大于100) 输出... -
蛇形矩阵 C++ 源代码
2009-10-10 19:41:05用C++写的一个蛇形矩阵,当输入一个整数n(10>=n>=1)时,输出大小为n行n列的蛇形矩阵。 -
牛客 HJ35 蛇形矩阵 c++
2022-04-12 15:47:25题目描述: 题目思路: 本题其实本质还是一个数学类问题,所以仔细观察每行每列各数之间的规律,即可解题。 #include <iostream> #include <string> #include <stack> using namespace std;... i & -
c++练习题蛇形矩阵
2020-10-26 21:08:59c++练习题蛇形矩阵 -
蛇形矩阵c语言实现
2021-05-20 09:28:45【问题描述】蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。如:1 3 6 10 152 5 9 144 8 137 1211本题要求根据输入的行数要求,输出对应的一个蛇形上三角矩阵【输入形式】一个整数【输出形式】与之对应的... -
蛇形矩阵(用二元数组实现)
2010-04-06 17:04:55学习数组或则循环结构时经常遇到的一个可以说是经典的问题——蛇形矩阵 -
蛇形矩阵 C/C++
2021-04-19 13:23:24第一题是蛇形矩阵,前天机式没有选这题,早知道选这题机式应该就能过关,今天思路+代码只花了23分钟,代码如下,矩阵大小可以自行修改。 #include <iostream> #include <cstdio> using namespace std... -
【C++】10行解决蛇形矩阵
2021-12-28 12:59:2610行解决蛇形矩阵 -
C语言实现蛇形矩阵
2017-12-19 21:37:14c语言实现蛇形矩阵 -
LeetCode 54,59,885题解 | 螺旋矩阵I,II,II(蛇形矩阵 C++代码)
2020-01-29 12:17:25螺旋矩阵 ILeetCode 59.螺旋矩阵 IILeetCode 885.螺旋矩阵 III 这类题,都是纯模拟题,定义一个方向数组,然后一个变量d表示当前在哪个方向上 LeetCode 54.螺旋矩阵 I class Solution { public: vector<int>...