Welcome![Sign In][Sign Up]
Location:
Search - N*N的螺旋矩阵

Search list

[Other用c编写的N*N的螺旋矩阵源代码

Description:

/*
实现效果:
1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 20 24 25
*/
#include <stdio.h>
#define N 5 //阶数,即N*N的螺旋矩阵

void main()
{
    int i, j, num=1, a[N][N];
    for(i=0; i<=N/2; i++)
    {
        for(j=i; j<N-i; j++) a[i][j]=n++;
        for(j=i+1; j<N-i; j++) a[j][N-i-1]=n++;
        for(j=N-i-2; j>i; j--) a[N-i-1][j]=n++;
        for(j=N-i-1; j>i; j--) a[j][i]=n++;
    }
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
            printf("%2d ",a[i][j]);
        printf("\n");
    }
}
    

 

不知道叫什么,先叫它“回宫图”吧
年初的时候在贴吧瞎逛,看到了一个程序挺有意思,会输出如下的形状:
01 24 23 22 21 20 19
02 25 40 39 38 37 18
03 26 41 48 47 36 17
04 27 42 49 46 35 16
05 28 43 44 45 34 15
06 29 30 31 32 33 14
07 08 09 10 11 12 13
仔细看这个形状,数字是按顺序往里回旋的,觉得很有创意,可是一看源代码头就大了,
每个编程人都知道看别人的代码是很困难的,尤其像这种不知道思路的,所以也就放下
没管了。
昨天上物理课实在是没心思听,就想起这个程序,想了一节课,果然不负有心人,给弄出来了,这个是增强版的,可以输入1-10中的任意个数,然后生成图形。
先看代码,没有注释,所以不好看的懂。
#include<stdio.h>
main()
{
       int n,m,i,j,t,k=1;
       int a[11][11];
       clrscr();
       do{
       printf("please input a number(1-10):");
       scanf("%d",&n);
       }while(n<1||n>10);
       t=n+1;
       for(m=1;m<=t/2;m++)
         {
           for(i=m;i<=t-m;i++)
             {a[i][m]=k;k++;}
           for(j=m+1;j<=t-m;j++)
             {a[i-1][j]=k;k++;}
           for(i=n-m;i>=m;i--)
             {a[i][j-1]=k;k++;}
           for(j=n-m;j>=m+1;j--)
             {a[i+1][j]=k;k++;}
         }
       for(i=1;i<=n;i++)
         {
           for(j=1;j<=n;j++)
             {
               if(a[i][j]<=9) printf("0%d ",a[i][j]);
               else printf("%d ",a[i][j]);       }
           printf("\n");
         }
       getch();
}
就是这样的。


可以更简洁些:

#include<stdio.h>
main()
{
       int n,m,i,j,t,k=1;
       int a[11][11];
       clrscr();
       do{
       printf("please input a number(1-10):");
       scanf("%d",&n);
       }while(n<1||n>10);
       t=n+1;
       for(m=1;m<=t/2;m++)
         {
           for(i=m;i<=t-m;i++)
             a[i][m]=k++;
           for(j=m+1;j<=t-m;j++)
             a[i-1][j]=k++;
           for(i=n-m;i>=m;i--)
             a[i][j-1]=k++;
           for(j=n-m;j>=m+1;j--)
             a[i+1][j]=k++;
         }
       for(i=1;i<=n;i++)
         {
           for(j=1;j<=n;j++)
             {
               if(a[i][j]<=9) printf("0%d ",a[i][j]);
               else printf("%d ",a[i][j]);       }
           printf("\n");
         }
       getch();
}

 


 #include <stdio.h>
#define N 8
main(){
 int i,j,n=1,a[N][N];
 for(i=0;i<=N/2;i++){
  for(j=i;j<N-i;j++)
   a[i][j]=n++;
  for(j=i+1;j<N-i;j++)
   a[j][N-i-1]=n++;
  for(j=N-i-2;j>i;j--)
   a[N-i-1][j]=n++;
  for(j=N-i-1;j>i;j--)
   a[j][i]=n++;
 }
 for(i=0;i<N;i++){
  printf("\n\n");
  for(j=0;j<N;j++)
   printf("%5d",a[i][j]);
 }
}
 

 


                                马踏棋盘问题


#include <stdio.h>
#define N 5
void main(){
 int x,y;
 void horse(int i,int j);
 printf("Please input start position:");
 scanf("%d%d",&x,&y);
 horse(x-1,y-1);
}
void horse(int i,int j){
 int a[N][N]={0},start=0,
  h[]={1,2,2,1,-1,-2,-2,-1},
  v[]={2,1,-1,-2,2,1,-1,-2},
  save[N*N]={0},posnum=0,ti,tj,count=0;
 int jump(int i,int j,int a[N][N]);
 void outplan(int a[N][N]);
 a[i][j]=posnum+1;
 while(posnum>=0){
  ti=i;tj=j;
  for(start=save[posnum];start<8;++start){
   ti+=h[start];tj+=v[start];
   if(jump(ti,tj,a))
    break;
   ti-=h[start];tj-=v[start];
  }
  if(start<8){
   save[posnum]=start;
   a[ti][tj]=++posnum+1;
   i=ti;j=tj;save[posnum]=0;
   if(posnum==N*N-1){
    //outplan(a);
    count++;
   }
  }
  else{
   a[i][j]=0;
   posnum--;
   i-=h[save[posnum>;j-=v[save[posnum>;
   save[posnum]++;
  }
 }
 printf("%5d",count);
}
int jump(int i,int j,int a[N][N]){
 if(i<N&&i>=0&&j<N&&j>=0&&a[i][j]==0)
  return 1;
 return 0;
}
void outplan(int a[N][N]){
 int i,j;
 for(i=0;i<N;i++){
  for(j=0;j<N;j++)
   printf("%3d",a[i][j]);
  printf("\n");
 }
 printf("\n");
 //getchar();
}
用回溯法得到所有的解,但效率较低,只能算出5行5列的

 


Platform: | Size: 4395 | Author: good@588 | Hits:

[Other resourceRes

Description: 逆时针螺旋矩阵。把1到N*N的整数按逆时针螺旋放于一个N*N的矩阵当中。
Platform: | Size: 1495 | Author: laien | Hits:

[Windows DevelopC源代码实例

Description: 包含220个C语言的各种源程序:001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 自增/自减运算 008 数列求和 009 乘法口诀表 010 猜数字游戏 011 模拟ATM(自动柜员机)界面 012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的输入输出 033 扑克牌的结构表示 034 用“结构”统计学生成绩 035 报数游戏 036 模拟社会关系 037 统计文件的字符数 038 同时显示两个文件的内容 039 简单的文本编辑器 040 文件的字数统计程序 041 学生成绩管理程序 第二部分 数据结构篇 042 插入排序 043 希尔排序 044 冒泡排序 045 快速排序 046 选择排序 047 堆排序 048 归并排序 049 基数排序 050 二叉搜索树操作 051 二项式系数递归 052 背包问题 053 顺序表插入和删除 054 链表操作(1) 055 链表操作(2) 056 单链表就地逆置 057 运动会分数统计 058 双链表 059 约瑟夫环 060 记录个人资料 061 二叉树遍利 062 浮点数转换为字符串 063 汉诺塔问题 064 哈夫曼编码 065 图的深度优先遍利 066 图的广度优先遍利 067 求解最优交通路径 068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数值计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的尾数 077 打鱼还是晒网 078 怎样存钱以获取最大利息 079 阿姆斯特朗数 080 亲密数 081 自守数 082 具有abcd=(ab+cd)2性质的数 083 验证歌德巴赫猜想 084 素数幻方 085 百钱百鸡问题 086 爱因斯坦的数学题 087 三色球问题 088 马克思手稿中的数学题 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松的分酒趣题 094 求π的近似值 095 奇数平方的有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 尼科彻斯定理 100 扑克牌自动发牌 101 常胜将军 102 搬山游戏 103 兔子产子(菲波那契数列) 104 数字移动 105 多项式乘法 106 产生随机数 107 堆栈四则运算 108 递归整数四则运算 109 复平面作图 110 绘制彩色抛物线 111 绘制正态分布曲线 112 求解非线性方程 113 实矩阵乘法运算 114 求解线性方程 115 n阶方阵求逆 116 复矩阵乘法 117 求定积分 118 求满足特异条件的数列 119 超长正整数的加法 第四部分 图形篇 120 绘制直线 121 绘制圆 122 绘制圆弧 123 绘制椭圆 124 设置背景色和前景色 125 设置线条类型 126 设置填充类型和填充颜色 127 图形文本的输出 128 金刚石图案 129 飘带图案 130 圆环图案 131 肾形图案 132 心脏形图案 133 渔网图案 134 沙丘图案 135 设置图形方式下的文本类型 136 绘制正多边形 137 正六边形螺旋图案 138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色模式编程 148 绘制蓝天图案 149 屏幕检测程序 150 运动的小车动画 151 动态显示位图 152 利用图形页实现动画 153 图形时钟 154 音乐动画 第五部分 系统篇 155 读取DOS系统中的国家信息 156 修改环境变量 157 显示系统文件表 158 显示目录内容 159 读取磁盘文件 160 删除目录树 161 定义文本模式 162 设计立体窗口 163 彩色弹出菜单 164 读取CMOS信息 165 获取BIOS设备列表 166 锁住硬盘 167 备份/恢复硬盘分区表 168 设计口令程序 169 程序自我保护 第六部分 常见试题解答篇 170 水果拼盘 171 小孩吃梨 172 删除字符串中的特定字符 173 求解符号方程 174 计算标准差 175 求取符合特定要求的素数 176 统计符合特定条件的数 177 字符串倒置 178 部分排序 179 产品销售记录处理 180 特定要求的字符编码 181 求解三角方程 182 新完全平方数 183 三重回文数 184 奇数方差 185 统计选票 186 同时整除 187 字符左右排序 188 符号算式求解 189 数字移位 190 统计最高成绩 191 比较字符串长度 192 合并整数 193 矩阵逆置 194 删除指定的字符 195 括号匹配 196 字符串逆置 197 SIX/NINE问题 198 单词个数统计 199 方差运算 200 级数运算 201 输出素数 202 素数题 203 序列排序 204 整数各位数字排序 205 字符串字母移位 206 Fibonacc数列 第七部分 游戏篇 207 商人过河游戏 208 吃数游戏 209 解救人质游戏 210 打字训练游戏 211 双人竞走游戏 212 迷宫探险游戏 213 迷你撞球游戏 214 模拟扫雷游戏 215 推箱子游戏 216 五子棋游戏 第八部分 综合实例篇 217 综合CAD系统 218 功能强大的文本编辑器 219 图书管理系统 220 进销存管理系统
Platform: | Size: 3250828 | Author: 79446210 | Hits:

[Windows DevelopWL40987330 C语言算法集

Description:

目录


第一部分  基础篇
 
001  第一个C程序 
002  运行多个源文件 
003  求整数之积 
004  比较实数大小 
005  字符的输出 
006  显示变量所占字节数 
007  自增/自减运算 
008  数列求和 
009  乘法口诀表 
010  猜数字游戏 
011  模拟ATM(自动柜员机)界面 
012  用一维数组统计学生成绩 
013  用二维数组实现矩阵转置 
014  求解二维数组的最大/最小元素 
015  利用数组求前n个质数 
016  编制万年历 
017  对数组元素排序 
018  任意进制数的转换 
019  判断回文数 
020  求数组前n元素之和 
021  求解钢材切割的最佳订单 
022  通过指针比较整数大小 
023  指向数组的指针 
024  寻找指定元素的指针 
025  寻找相同元素的指针 
026  阿拉伯数字转换为罗马数字 
027  字符替换 
028  从键盘读入实数 
029  字符行排版 
030  字符排列 
031  判断字符串是否回文 
032  通讯录的输入输出 
033  扑克牌的结构表示
034  用“结构”统计学生成绩 
035  报数游戏 
036  模拟社会关系 
037  统计文件的字符数 
038  同时显示两个文件的内容 
039  简单的文本编辑器 
040  文件的字数统计程序 
041  学生成绩管理程序 
 
第二部分  数据结构篇
 
042  插入排序 
043  希尔排序 
044  冒泡排序 
045  快速排序 
046  选择排序 
047  堆排序 
048  归并排序 
049  基数排序 
050  二叉搜索树操作 
051  二项式系数递归 
052  背包问题 
053  顺序表插入和删除 
054  链表操作(1) 
055  链表操作(2) 
056  单链表就地逆置 
057  运动会分数统计 
058  双链表 
059  约瑟夫环 
060  记录个人资料 
061  二叉树遍利 
062  浮点数转换为字符串 
063  汉诺塔问题 
064  哈夫曼编码 
065  图的深度优先遍利 
066  图的广度优先遍利
067  求解最优交通路径 
068  八皇后问题
069  骑士巡游 
070  用栈设置密码 
071  魔王语言翻译 
072  火车车厢重排 
073  队列实例 
074  K阶斐波那契序列 
 
第三部分  数值计算与趣味数学篇
 
075  绘制余弦曲线和直线的迭加
076  计算高次方数的尾数 
077  打鱼还是晒网 
078  怎样存钱以获取最大利息 
079  阿姆斯特朗数 
080  亲密数 
081  自守数 
082  具有abcd=(ab+cd)2性质的数 
083  验证歌德巴赫猜想
084  素数幻方 
085  百钱百鸡问题 
086  爱因斯坦的数学题 
087  三色球问题
088  马克思手稿中的数学题 
089  配对新郎和新娘 
090  约瑟夫问题
091  邮票组合 
092  分糖果 
093  波瓦松的分酒趣题 
094  求π的近似值 
095  奇数平方的有趣性质
096  角谷猜想 
097  四方定理 
098  卡布列克常数 
099  尼科彻斯定理 
100  扑克牌自动发牌 
101  常胜将军 
102  搬山游戏
103  兔子产子(菲波那契数列) 
104  数字移动 
105  多项式乘法 
106  产生随机数 
107  堆栈四则运算 
108  递归整数四则运算 
109  复平面作图 
110  绘制彩色抛物线 
111  绘制正态分布曲线 
112  求解非线性方程 
113  实矩阵乘法运算
114  求解线性方程 
115  n阶方阵求逆 
116  复矩阵乘法 
117  求定积分 
118  求满足特异条件的数列 
119  超长正整数的加法 
 
第四部分  图形篇
 
120  绘制直线 
121  绘制圆 
122  绘制圆弧 
123  绘制椭圆
124  设置背景色和前景色
125  设置线条类型 
126  设置填充类型和填充颜色 
127  图形文本的输出 
128  金刚石图案
129  飘带图案 
130  圆环图案 
131  肾形图案 
132  心脏形图案 
133  渔网图案 
134  沙丘图案
135  设置图形方式下的文本类型 
136  绘制正多边形 
137  正六边形螺旋图案 
138  正方形螺旋拼块图案
139  图形法绘制圆 
140  递归法绘制三角形图案 
141  图形法绘制椭圆 
142  抛物样条曲线 
143  Mandelbrot分形图案
144  绘制布朗运动曲线 
145  艺术清屏 
146  矩形区域的颜色填充 
147  VGA256色模式编程 
148  绘制蓝天图案 
149  屏幕检测程序 
150  运动的小车动画 
151  动态显示位图 
152  利用图形页实现动画
153  图形时钟 
154  音乐动画 
 
第五部分  系统篇
 
155  读取DOS系统中的国家信息 
156  修改环境变量 
157  显示系统文件表 
158  显示目录内容 
159  读取磁盘文件 
160  删除目录树 
161  定义文本模式 
162  设计立体窗口 
163  彩色弹出菜单 
164  读取CMOS信息 
165  获取BIOS设备列表 
166  锁住硬盘 
167  备份/恢复硬盘分区表 
168  设计口令程序 
169  程序自我保护
 
第六部分  常见试题解答篇
 
170  水果拼盘 
171  小孩吃梨 
172  删除字符串中的特定字符 
173  求解符号方程 
174  计算标准差 
175  求取符合特定要求的素数 
176  统计符合特定条件的数 
177  字符串倒置 
178  部分排序 
179  产品销售记录处理 
180  特定要求的字符编码 
181  求解三角方程 
182  新完全平方数 
183  三重回文数 
184  奇数方差 
185  统计选票 
186  同时整除 
187  字符左右排序 
188  符号算式求解 
189  数字移位 
190  统计最高成绩 
191  比较字符串长度 
192  合并整数 
193  矩阵逆置
194  删除指定的字符
195  括号匹配 
196  字符串逆置 
197  SIX/NINE问题 
198  单词个数统计 
199  方差运算 
200  级数运算 
201  输出素数 
202  素数题 
203  序列排序 
204  整数各位数字排序 
205  字符串字母移位 
206  Fibonacc数列 
 
第七部分  游戏篇
 
207  商人过河游戏 
208  吃数游戏 
209  解救人质游戏 
210  打字训练游戏 
211  双人竞走游戏 
212  迷宫探险游戏 
213  迷你撞球游戏
214  模拟扫雷游戏 
215  推箱子游戏 
216  五子棋游戏 
 
第八部分  综合实例篇
 
217  综合CAD系统 
218  功能强大的文本编辑器
219  图书管理系统
220  进销存管理系统
 


Platform: | Size: 3245365 | Author: wl409873350 | Hits:

[JSP/JavaRes

Description: 逆时针螺旋矩阵。把1到N*N的整数按逆时针螺旋放于一个N*N的矩阵当中。-Anti-clockwise spiral matrix. The 1 to N* N integer by anti-clockwise spiral in a N* N matrix of them.
Platform: | Size: 1024 | Author: laien | Hits:

[Othershuzijuzhen

Description: 数字矩阵,N的平方个数字,从一到N的平方,螺旋状打印-Figure matrix, N the square of a figure, from 1 to N of the square, spiral print
Platform: | Size: 19456 | Author: 王晶 | Hits:

[Otherrotate

Description: 输入一个自然数N(2≤N≤9),要求输出如下的螺旋矩阵,即边长为N*N,元素取值为1至N*N,1在左上角,呈顺时针方向依次放置各元素。 N=3时,相应的矩阵中每个数字位置如下图所示: 1 2 3 8 9 4 7 6 5-Enter a natural number N (2 ≤ N ≤ 9), the requirements are as follows spiral output matrix, that is, edge length of N* N, the element values for the 1 to N* N, 1 in the upper left corner, showing a clockwise direction in order to place the various elements . N = 3, the corresponding figures for the location of each matrix as follows: 123,894,765
Platform: | Size: 1024 | Author: QQQQQ | Hits:

[OtherSpiral_Matrix

Description: 螺旋矩阵:产生指定大小N的螺旋N*N矩阵 最好是小于15*15 的 这样看起来会直观一些-Spiral Matrix: have specified the size N of the N* N matrix spiral preferably less than 15* 15 of this appears to be some intuitive
Platform: | Size: 1024 | Author: 林文福 | Hits:

[Otherslxjz

Description: 双螺旋矩阵的定义如下,矩阵的最中心是1,往上是2,右拐3,向下4,然后依次5、6,7...构成一条顺序增大的螺旋线,此外,如果从中心往下走的话,也是一条对称的螺旋线。题目是给定一个矩阵维度N,将其打印出来 -Double helix is defined as the matrix, the matrix is 1, up 2, right 3, down 4, to be followed by a sequence 5,6,7 ... constitute the helix increases, in addition, if Center, then go down as well as a symmetrical spiral. The subject is given a matrix dimension of N, to print out
Platform: | Size: 1024 | Author: ttzz | Hits:

[Windows Developluoxuan

Description: 在windows系统下VC平台上使用C++实现的n*n阶顺时针螺旋矩阵的显示-Under the windows system using VC platform C++ implementation of the n* n-order matrix display clockwise spiral
Platform: | Size: 220160 | Author: 谭丹 | Hits:

[Data structsc1

Description: 用选择法对10个整数排序 已由一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中 杨辉三角形 按顺时针旋进的5×5的螺旋方阵,打印 要求判定矩阵An*n是否为对称阵 输出下列9×9方阵-With the selection method has been a sort of 10 integers is sorted array, this type a number, required by the law of the original order and insert it into the array Triangle clockwise precession of the 5 × 5 square spiral, Print asked to judge whether the matrix An* n symmetric matrix output of the following 9 × 9 square
Platform: | Size: 45056 | Author: miraclewangii | Hits:

[JSP/JavaMatrix1

Description: 螺旋矩阵的实现,从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中-Spiral Matrix in, enter an integer from the keyboard (1 ~ 20) are indicated in the figure for the size of the matrix, the 1,2,3 ... n* n the number of forms filled in accordance with one of a clockwise spiral
Platform: | Size: 1024 | Author: sy520 | Hits:

[Data structsClockwiseSpiral

Description: 自己做的把1,2,3…n*n 的数字按照顺时针螺旋的形式形成矩阵。-Do 1, 2, 3 ... n* n figures formed by the clockwise spiral form of a matrix.
Platform: | Size: 12288 | Author: 赢在企鹅 | Hits:

[Printing programAny-screw-matrix

Description: 能打印如下的任意长度数字螺旋矩阵 长度为3: 1 8 7 2 9 6 3 4 5 长度为4: 1 12 11 10 2 13 16 9 3 14 15 8 4 5 6 7 长度为n -Any length can print the following figures spiral matrix length of 3: 1 8 7 2 9 6 3 4 5 length of 4: 1 12 11 10 2 13 16 9 3 14 15 8 4 5 6 7 Length of n .....
Platform: | Size: 262144 | Author: 梁经国 | Hits:

[Data structsrotate

Description: 输入一个自然数N(2≤N≤9),要求输出如下的螺旋矩阵,即边长为N*N,元素取值为1至N*N,1在左上角,呈顺时针方向依次放置各元素。-Enter a natural number N (2 ≤ N ≤ 9), the required output of a screw matrix, i.e. a side length of N* N, elements in the range 1 to N* N, 1 in the upper left, showing the elements are placed in order clockwise .
Platform: | Size: 166912 | Author: | Hits:

[OtherCpp1

Description: 输入一个n,输出一个n行n列的,螺旋形增加的1~n^2的矩阵-Spiral matrix
Platform: | Size: 1024 | Author: 李嘉阳 | Hits:

[Multimedia DevelopSpiral_Matrix

Description: 螺旋矩阵:产生指定大小N的螺旋N*N矩阵最好是小于15*15 的这样看起来会直观一些-Spiral Matrix: have specified the size N of the N* N matrix spiral preferably less than 15* 15 of this appears to be some intuitive
Platform: | Size: 1024 | Author: laoa24jujj | Hits:

CodeBus www.codebus.net