Welcome![Sign In][Sign Up]
Location:
Search - 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 Web Code回溯法实现N皇后问题

Description:

vc++源码 N皇后


Platform: | Size: 787 | Author: ykqfan | Hits:

[Windows Developn皇后问题

Description: 这是n皇后的源代码,用分支界限法实现的
Platform: | Size: 1087378 | Author: yangxiaoman2006@126.com | Hits:

[SourceCodeZ-N法整定PID参数

Description: 用Z-N法整定PID参数
Platform: | Size: 24576 | Author: jwjuan2005@163.com | Hits:

[DocumentsN后问题(回溯法解决)

Description: n后问题回溯法解决
Platform: | Size: 1628924 | Author: xiaohu100910 | Hits:

[CSharp求N个数的和

Description: 输如N个数输出这N个数的和,并利用函数调用。
Platform: | Size: 1062 | Author: moxueweirong729252692@_ | Hits:

[matlab偏微分方程组N=4的龙格-库塔方法求解

Description: 偏微分方程组N=4的龙格-库塔方法求解,matlab编程,试过可以
Platform: | Size: 1323 | Author: 1264379564@qq.com | Hits:

[Linux-Unixn皇后

Description: n皇后-n Queen
Platform: | Size: 2048 | Author: | Hits:

[Othern皇后问题

Description: n皇后问题的C++实现-n Queen's realization of C
Platform: | Size: 1024 | Author: 胡凯 | Hits:

[Documents运用递归来解N皇后问题

Description: 运用递归来解N皇后问题-use recursive solution to the problem of N Queen
Platform: | Size: 1024 | Author: | Hits:

[Otherqueenn(N皇后问题)

Description: 在一个N×N的国际象棋棋盘中摆N个皇后,使这N个皇后不能互相被对方吃掉。-in an N N chess board wavers N Queen so that the N-Queens that can be eaten by the other side.
Platform: | Size: 22528 | Author: 李秉肇 | Hits:

[Data structs回溯法N皇后问题

Description: 这是计算机算法中的回溯法中的一个经典的问题--N皇后问题!希望对学计算机算法的同学有用!-This is a computer algorithm, the retroactive law on the issue of a classic-- N Queen! Want to learn how to use computer algorithms useful to the students!
Platform: | Size: 2048 | Author: 中国 | Hits:

[Windows DevelopN皇后问题

Description: 在一个N×N的国际象棋棋盘中摆N个皇后,使这N个皇后不能互相被对方吃掉。-Put on N queens in a N multiply N chessboard,preventing each queen to be knocked over
Platform: | Size: 22528 | Author: 罗敏秀 | Hits:

[Windows DevelopN皇后摆法动态演示

Description: 用VC编写的N皇后摆法动态演示程序,已经较为完美!欢迎下载指导!-A N queen game dynamic demonstration program write in VC, already perfect. please come and download!
Platform: | Size: 31744 | Author: 王哲 | Hits:

[Algorithmn元一次方程

Description: 用c++语言用数值计算方法解n元一次方程组。-using numerical calculation method for n-linear equation group.
Platform: | Size: 1024 | Author: 刘畅 | Hits:

[Algorithmn-s

Description: 四阶龙格库塔法求解流体力学-- 关于N-S方程的串行求解源程序-four bands Runge Kutta method hydrodynamics-- on the Navier-Stokes equations to solve the serial source
Platform: | Size: 4096 | Author: 朱天山 | Hits:

[GUI Developn后问题

Description: 在 n 行 n 列的国际象棋棋盘上,最多可布n个皇后。 若两个皇后位于同一行、同一列、同一对角线上,则称为它们为互相攻击。 n皇后问题是指找到这 n 个皇后的互不攻击的布局。 n 行 n 列的棋盘上,主次对角线各有2n-1条。-n n trip out of the international chess board, the maximum n Queen's cloth. If two at the same Queen's visit, the same series on the same diagonal, as they attack each other. N Queen's problem is found n the Queen not to attack each other's layout. N n trip out on the chessboard, and secondary diagonal each 2n-1.
Platform: | Size: 1024 | Author: 刘二 | Hits:

[Internet-Network网络模拟可靠数据传输Go Back N

Description: 网络模拟可靠数据传输Go Back N,网络原理上机作业,大家可以下来参考。-network simulation reliable data transmission Go Back N, network operating principle on the plane, we can down reference.
Platform: | Size: 307200 | Author: | Hits:

[Data structsn-Queen

Description: 算法设计:著名的n后问题:在nXn的棋盘上放彼此不受攻击的n个皇后,按国际象棋的规则,任何2个皇后不在同一行或同一列或同一斜线上. 本算法才用回朔法来解决.-algorithm design : n after the famous question : In nXn put on the chessboard of each other against attack n empress, according to the international rules of chess, any two Queen's not the same line, or in the same series or slash on the same. the algorithm used the method to solve the Schomburg.
Platform: | Size: 251904 | Author: 王涛 | Hits:

[AI-NN-PRN-queen-Cplusplus

Description: 解国际象棋的N皇后问题的C++源代码,可用于大学计算机技术课程《算法分析》上机联系-Solutions International Chess Queen of the N C source code, University computer can be used for technical courses "algorithm analysis" on the plane link
Platform: | Size: 3833856 | Author: 吴俊杰 | Hits:
« 12 3 4 5 6 7 8 9 10 ... 50 »

CodeBus www.codebus.net