精华内容
下载资源
问答
  • 蛇形矩阵 c++
    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++蛇形矩阵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:36
    1. 实验题目蛇形矩阵是由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

    输出是:

    3  6 10 15

    5  9 14

    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++蛇形矩阵,通过用户输入蛇形矩阵的维数,自动具体输出蛇形排列矩阵
  • 蛇形矩阵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
    
    二.思路分析
    1. 从蛇形矩阵中不难发现,它从外圈向内,一圈一圈构成一个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;
    }
    
    1. 此外,我们还可以看出,当n为奇数时,矩阵有中心点n*n;当n为偶数时,矩阵没有中心点。
    if(n % 2 == 1)
        *(*(num+n/2)+n/2) = n*n;
    
    1. 在函数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;
    }
    
    1. 在主函数中,定义一个二维数组接受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:03
    C/C++实现蛇形矩阵(超详解)
  • C++实现蛇形矩阵

    2019-12-12 20:35:28
    C++实现蛇形矩阵 实现下图形式的蛇形矩阵 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:59
    c++练习题蛇形矩阵
  • 蛇形矩阵c语言实现

    2021-05-20 09:28:45
    【问题描述】蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。如:1 3 6 10 152 5 9 144 8 137 1211本题要求根据输入的行数要求,输出对应的一个蛇形上三角矩阵【输入形式】一个整数【输出形式】与之对应的...
  • 学习数组或则循环结构时经常遇到的一个可以说是经典的问题——蛇形矩阵
  • 蛇形矩阵 C/C++

    2021-04-19 13:23:24
    第一题是蛇形矩阵,前天机式没有选这题,早知道选这题机式应该就能过关,今天思路+代码只花了23分钟,代码如下,矩阵大小可以自行修改。 #include <iostream> #include <cstdio> using namespace std...
  • 10行解决蛇形矩阵
  • C语言实现蛇形矩阵

    万次阅读 多人点赞 2017-12-19 21:37:14
    c语言实现蛇形矩阵
  • 螺旋矩阵 ILeetCode 59.螺旋矩阵 IILeetCode 885.螺旋矩阵 III 这类题,都是纯模拟题,定义一个方向数组,然后一个变量d表示当前在哪个方向上 LeetCode 54.螺旋矩阵 I class Solution { public: vector<int>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 955
精华内容 382
关键字:

蛇形矩阵c++

c++ 订阅