用c++实现一个n*n矩阵,矩阵沿着45度递增,形成zigzag数组

#include<stdio.h>

#include<iostream>

using namespace std;

int main()

{

int N;

int s, i, j;

int squa;

cin>>N;

squa = N*N;

/*为指向int型指针的指针分配空间,

该指针指向n个int型指针*/

int **a = (int **)malloc(N* sizeof(int));

if (a == NULL)

return 0;

for (i = 0; i < N; i++)

{

if ((a[i] = (int *)malloc(N*sizeof(int))) == NULL)

{

/*对于前面的指针的每个值(int指针)赋值,使其指向一个int

数组,如果分配失败,则释放放在它

之前申请成功的空间*/

while (--i >= 0)

{

free(a[i]);

free(a);

return 0;

}

}

}

for (i = 0; i < N; i++)

{

for (j = 0; j < N; j++)

{

s = i + j;

if (s < N)

a[i][j] = s*(s + 1) / 2 + (((i + j) % 2 == 0) ? i : j);

else

{

s = (N - 1 - i) + (N - 1 - j);

a[i][j] = squa - s*(s + 1) / 2 -

(N - (((i + j) % 2 == 0) ? i : j));

}

}

}

for (i = 0; i < N; i++)

{

for (j = 0; j < N; j++)

{

printf("%6d", a[i][j]);

}

printf("\n");

}

system("pause");

return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 16:26:06

用c++实现一个n*n矩阵,矩阵沿着45度递增,形成zigzag数组的相关文章

47.从键盘上输入一个3*3的矩阵,并求其主对角线元素的和

#include<iostream> using namespace std; int main() { int sum=0; int a[3][3]; cout<<"please input 9 numbers:"<<endl; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { cin>>a[i][j]; } } for(int m=0;m<3;m++) { sum+=a[m]

判断一个10*10的矩阵是否为单位矩阵

<C和指针>第8章编程练习第3题: 1 /* 2 ** 判断一个10*10的矩阵是否为单位矩阵 3 */ 4 5 #include <stdio.h> 6 #define ROW 10 7 #define COL 10 8 9 /* 10 ** 函数接受一个10*10的矩阵 11 ** 判断其是否为单位矩阵 12 ** 返回值: 13 ** 是单位矩阵,返回1 14 ** 不是单位矩阵,返回0 15 */ 16 int 17 indentity_matrix( int (*matr

2014年去哪儿网笔试题--一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色...

一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色,余数为0着色为red,1为blue,2为green,3为black,可以理解为生成4中颜色的棋子放入棋盘,如果存在其中同色五星连珠的情况(规则通五子棋),找出任意一组,输出5个棋子的位置下标值. 只是用最笨的方法实现一下: public class FiveColor { public void test(){ int a[][]=new int[10][10]; for(int i=0

一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵

题目描述: 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积) 输入: 每个案例第一行三个正整数N,M<=100,表示矩阵大小,和一个整数K 接下来N行,每行M个数,表示矩阵每个元素的值 输出: 输出最小面积的值.如果出现任意矩阵的和都小于K,直接输出-1. 样例输入: 4 4 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 样例输出: 1 首先这个题应该是有一个动态规划的解法,不过好像复杂度也要到O(n^3lo

NX二次开发-创建一个3 x 3矩阵UF_CSYS_create_matrix

1 NX9+VS2012 2 3 4 #include <uf.h> 5 #include <uf_csys.h> 6 #include <uf_mtx.h> 7 8 9 10 UF_initialize(); 11 12 //输入X向量Y向量输出一个3*3矩阵 13 double XVec[3] = {0.0, 0.0, 1.0}; 14 double YVec[3] = {0.0, 1.0, 0.0}; 15 double Mtx[9]; 16 UF_MTX3_in

HDU 2842 Chinese Rings (带常数矩阵+矩阵快速幂)

HDU 2842 Chinese Rings (带常数矩阵+矩阵快速幂) ACM 题目地址:HDU 2842 Chinese Rings 题意: 一种中国环,解开第k个环需要先解开前(k-2)个环,并留有第(k-1)环.问解开n环最少需要几步. 分析: 设f(n)表示解开n环. 1. 由于游戏规则,解开n环不能一下子把n-1全解开了,否则第n个就没法拿掉了. 2. 得先拿掉第n个:先完成f(n-2),然后再拿掉第n环. 3. 然后放回前(n-2),其实这也是f(n-2),因为是一个逆的过程. 4

算法总结之 将正方形矩阵顺时针转动90度

给定一个 N * N的矩阵,把这个矩阵调整成顺时针转动90度后的形式 要求额外空间复杂度为O(1) 这里仍然使用分圈处理方式 如果你愿意一层一层一层的拨开我的心~  哈哈哈 由外到内的旋转 上代码一目了然:

将正方形矩阵顺时针转动90度

题目:给定一个N*N的矩阵matrix,求把这个矩阵调整成顺时针转动90度后的形式. 例如: 1     2    3    4 5     6    7    8 9    10  11  12 13  14  15  16 顺时针转动90度后为: 13    9    5   1 14   10   6   2 15   11   7   3 16   12   8   4 要求:额外空间复杂度为O(1) 解答: 这里任然使用分圈处理的方式,在矩阵中用左上角的坐标(tr,tc)和右下角的坐标

Leetcode之深度优先搜索(DFS)专题-DFS+记忆化 329. 矩阵中的最长递增路径(Longest Increasing Path in a Matrix)

Leetcode之深度优先搜索(DFS)专题-329. 矩阵中的最长递增路径(Longest Increasing Path in a Matrix) 深度优先搜索的解题详细介绍,点击 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即不允许环绕). 示例 1: 输入: nums = [ [9,9,4], [6,6,8], [2,1,1] ] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9].