Welcome![Sign In][Sign Up]
Location:
Search - 矩阵

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:

[Mathimatics-Numerical algorithms矩阵求逆的c语言算法

Description: 通过利用c语言编程实现了对矩阵求逆的操作,可以大大简化用户的某些操作
Platform: | Size: 902 | Author: ja20_09ck | Hits:

[SDK稀疏矩阵运算器

Description: 稀疏矩阵运算器! 绝好的一个好毕业设计!
Platform: | Size: 24836 | Author: ludougao2006 | Hits:

[Graph program共生矩阵的计算

Description: matlab 纹理特征提取时用到的共生矩阵计算,并计算出能量、熵、惯性矩、相关4个纹理参数
Platform: | Size: 3899 | Author: wei_wu520@126.com | Hits:

[source in ebook稀疏矩阵数据结构的实现

Description: 实现了稀疏矩阵,用单元组进行存储,实现了矩阵的转置、快速转置、矩阵加法和矩阵输出的算法。本程序在VC 6.0上实现通过
Platform: | Size: 180925 | Author: albertyht@163.com | Hits:

[Graph program灰度共生矩阵提取纹理特征

Description: 灰度共生矩阵提取纹理特征
Platform: | Size: 1247 | Author: wzzlbw5@163.com | Hits:

[SourceCode矩阵求逆

Description: 用结构体实现矩阵的运算,如行列式,求逆等
Platform: | Size: 162867 | Author: zhangxuezhen1986@sina.com | Hits:

[SourceCode向量矩阵乘

Description: 这个源代码的功能是实现矩阵向量乘的算法。
Platform: | Size: 980263 | Author: papalovely@126.com | Hits:

[SCM51单片机的4*4矩阵键盘程序

Description: 51单片机的4*4矩阵键盘程序
Platform: | Size: 15420 | Author: guet202 | Hits:

[Algorithm矩阵求逆的JAVA代码

Description: 用JAVA写的各种数学常用算法,包括矩阵求逆等。
Platform: | Size: 4753 | Author: liugb0414@126.com | Hits:

[SourceCode矩阵相乘计算

Description: 一个简单的矩阵相乘程序
Platform: | Size: 447 | Author: yuangeshiwo | Hits:

[SCM矩阵键盘

Description: 单片机4*4矩阵键盘相加对比法源程序。自己写的,调试通过。
Platform: | Size: 1978 | Author: zhanfuv05@qq.com | Hits:

[SourceCode矩阵求逆的算法实现

Description: 用vc++6.0对矩阵求逆的算法进行实现
Platform: | Size: 613682 | Author: tanglin_good | Hits:

[matlab下三角矩阵的逆矩阵的详细算法

Description: 求下三角矩阵的逆矩阵的详细算法 matlab 矩阵计算
Platform: | Size: 36441 | Author: 597706775@qq.com | Hits:

[Books矩阵计算的理论与方法

Description: 内 容 提 要   本书系统阐述了矩阵计算这门学科的基础理论、基本方法和近十几年来发展成熟并得到了广泛应用的新成果.内容包括:矩阵知识的复习和补充,矩阵计算概论;求解线性方程组的直接法和迭代法,线性最小二乘问题,共轭梯度法;求解特征值问题的QR方法和同伦方法;Lanczos方法以及求解Jacobi矩阵特征值反问题的正交约化方法等.   本书取材上,既注重基础理论的严谨性、方法的实用性,又保持了内容的新颖性,反映了该学科的最新进展.本书内容自封,各章之间相对独立,可适用于不同读者的需要.   本书可作为计算数学、应用数学等有关专业高年级大学生和研究生的教材或教学参考书,也可供从事科学计算的数学工作者、工程技术人员和高校有关专业的高年级大学生和教师参考。
Platform: | Size: 7996441 | Author: lhl0723@163.com | Hits:

[Program doc矩阵键盘 verilog

Description: 用verilog写的 矩阵键盘
Platform: | Size: 241152 | Author: 1111122222 | Hits:

[Program doc4x6矩阵键盘

Description: 我们实验课自己做的仿真,4x6的矩阵键盘,按下某个键,显示相应的数字
Platform: | Size: 59844 | Author: yunqingxingcan | Hits:

[SourceCodetopelize矩阵快速解法的matlab程序

Description: 计算电磁学中离散海伦方程之后会得到topelize矩阵,当矩阵规模很大时采用一般的矩阵求逆程序会变得很慢,这个程序采用新的方法对这种矩阵可以快速的求解
Platform: | Size: 72605 | Author: xiongyue | Hits:

[Program doc稀疏矩阵乘法运算的十字链表实现

Description: 稀疏矩阵是指那些多数元素为零的矩阵。本文利用稀疏矩阵“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。通过采用标准C++语言设计实现了矩阵的乘法运算器。稀疏矩阵的乘法运算可用于解决许多实际的应用问题.提出一种新颖的稀疏矩阵相乘算法,算法实现中将计算单元由单个元素扩展至行向量,避免了矩阵的转置,减少了扫描次数。利用十字链表表示稀疏矩阵,再将建立好的两个相同行列数的稀疏矩阵进行相乘运算。
Platform: | Size: 196608 | Author: yunjisuan | Hits:

[Program doc稀疏矩阵

Description: 稀疏矩阵是指那些多数元素为零的矩阵。本文利用稀疏矩阵“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。通过采用标准C++语言设计实现了矩阵的乘法运算器。稀疏矩阵的乘法运算可用于解决许多实际的应用问题.提出一种新颖的稀疏矩阵相乘算法,算法实现中将计算单元由单个元素扩展至行向量,避免了矩阵的转置,减少了扫描次数。利用十字链表表示稀疏矩阵,再将建立好的两个相同行列数的稀疏矩阵进行相乘运算。
Platform: | Size: 58368 | Author: yunjisuan | Hits:
« 12 3 4 5 6 7 8 9 10 ... 50 »

CodeBus www.codebus.net