QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2537|回复: 1
打印 上一主题 下一主题

求教高手啊,C语言改matlab。帮帮忙,感激不尽

[复制链接]
字体大小: 正常 放大
chenhande        

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"
+ z! Y9 C$ ?, d7 `8 |# X7 K* e#include "string.h"# @9 v, u5 Q& x0 v$ a* V
#define N 50 # u$ i% C7 h9 M) v9 w( v
int jisuan(int a[N][N][N],int h,int z,int i,int j);0 \" u) n% h' q- l
void micifang(int a[N][N][N],int h,int t);
- N. [9 f! f- L) Q, |( zvoid buer(int a[N][N][N],int h);0 i+ ?( K7 v  t$ m* D
void warshall(int a[N][N][N],int h);$ Z. d; B6 J/ x# G: s6 r
main()
/ w4 o8 l9 a: I$ k, E  ?& ~! Q* t+ C{! f6 u8 j2 e$ a! p# ]( A; f7 u# n
int i,h,j,t;
6 y) `0 Q: c3 C% Vint a[N][N][N];
# t/ {5 U; N( d( e9 zprintf("请输入邻接矩阵A的行数(或列数):\n");* Y5 c6 C5 x/ f" H* t4 D# C1 |
scanf("%d",&h);
) C% D" M# A9 e& B7 }/ oprintf("\n请输入邻接矩阵A:\n\n");3 R  F% b; E' n. |
for(i=0;i<h;i++)0 {: K$ G9 W) E% `* h9 m
{& ]3 g- d, }8 {& Y- ^
printf("请输入邻接矩阵A的第%d行.\n",i+1);
" k' p; _) r7 r7 O! j$ {! a( kfor(j=0;j<h;j++)
4 _; @9 B' E: X4 N6 Iscanf("%d",&a[0][i][j]); 0 z( ]( O# Q- N' E0 Q$ j
}
1 Z7 C3 z; M6 Uprintf("\n邻接矩阵A为:\n");
! X3 j* S7 O0 K2 d( y+ ]  F# ufor(i=0;i<h;i++)" I' K& s8 j) j7 w! G
{
9 Z. }( T! |$ \# U6 j( @$ sfor(j=0;j<h;j++)
) u0 Y) D; }/ O# i6 S. u' Cprintf(" %d ",a[0][i][j]);
* O7 ^2 [& y0 }printf("\n");2 f; i, Q! w# G7 {0 ~% F
}6 C. k) {  V# {  w# x+ t
printf("\n\n\n算法一:\n");! l/ p; Z3 G& b* n4 y
printf("\n矩阵A的1次方为:\n");$ H& |$ ^5 Q/ g' A* t. |  l  W
for(i=0;i<h;i++)
* e* W( n( e1 R6 \1 j8 ^{
0 f7 `2 v7 t: J3 M- a0 H! Pfor(j=0;j<h;j++)2 L* E9 }! X' g. V* ?2 X
printf(" %d ",a[0][i][j]);
5 J; d! u  u# u$ J' v8 c' I: Vprintf("\n");) g% `& o5 g& x$ w
}, ~2 s! a' S2 ]5 }5 f6 D1 u
micifang(a,h,2);. j8 u- Y# l% I8 k1 v* Z; l& Z
for(i=0;i<h;i++)
$ ?5 y  k6 t# P! ofor(j=0;j<h;j++)
0 |7 Z  a* O& N( N! i8 sa[h][i][j]=0; //全部赋值为0!
; ?" y& F( A: h3 w; t5 [8 y; {  jfor(i=0;i<h;i++)1 t8 ^! f5 T7 s; z
for(j=0;j<h;j++)' Z/ u( t: `8 r5 C: w6 A9 X
for(t=0;t<h;t++)9 y7 w% k* [6 i2 U5 C* n
a[h][i][j]=a[h][i][j]+a[t][i][j];
& V9 B$ d2 `9 n3 ?printf("\n\nB的值如下:\n");
! P/ f6 i4 ^! mfor(i=0;i<h;i++)
2 S& m& A/ h$ m' U{
0 F5 v/ O+ L6 [# gfor(j=0;j<h;j++)
( _9 l4 Q7 G$ f# ]* H) x8 {printf(" %d ",a[h][i][j]);6 @, y7 u7 P% K# V
printf("\n");
5 o) V, l) H- f( R& b}
: [4 U8 j! o0 c( w. J. E, Kprintf("\n\n\n算法二:\n");
4 |; X& ^4 D- Hprintf("\n矩阵A的1次布尔幂次方为:\n");
7 u( O3 e& _7 Kfor(i=0;i<h;i++)9 a- |. z4 G: l! |* U: J
{
- l; d0 _' r$ U5 l% afor(j=0;j<h;j++)/ [& G0 P& o0 X" l
{
) n' E" T! }- J; bif(a[0][i][j]>1)  o8 _' _/ Q! T4 z$ W- T: n
a[0][i][j]=1;! q" g( c4 s3 t& l7 J
printf(" %d ",a[0][i][j]);) {! G1 Q" C, Y1 v, A" R
}% ~* _1 n+ X- b+ I$ A
printf("\n");0 \/ U7 g& g5 t  ~! k: Y
}; m+ ~. C+ m  X6 h/ I3 T
buer(a,h,2);
4 E4 e% \* i2 G) F  K$ F& }# cprintf("\n\nP的值如下:\n");
% d) f# ?& I0 a+ [1 O% Qfor(i=0;i<h;i++)
. v3 w; S, v& A( ^{
% r4 u* L2 y& m! B+ F9 }for(j=0;j<h;j++)1 n  M6 p' Z; q. E* [6 N" F
{ & M9 y$ r0 O8 w* q
if(a[h][i][j]>1)6 ]: K8 F& J# z) h( L0 i# V; j
a[h][i][j]=1;4 M5 t9 S2 {9 E
printf(" %d ",a[h][i][j]);+ Z+ y6 x  N' B
}& E& ^" R, y9 u  b5 G
printf("\n");
; C$ D/ h7 w+ a5 i2 f9 b}
* W) [2 k  F0 @. d6 W% T3 bprintf("\n\n\nwarshall算法:\n\n");
% x7 J0 u* E6 }# M/ C
+ C3 u2 o2 \" c2 w: p- c& Pfor(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。# x" Z$ G  n/ K; A/ c
for(j=0;j<h;j++)6 z* r# t; `) ^# y
if(a[0][i][j]!=0)
; r' ~. G! w! Y$ [" U$ C1 N) ba[0][i][j]=1;
. e2 T$ N$ z/ _7 q8 D: V/ Cprintf("整理后的可达矩阵为:\n");
' f: F$ p. `3 R7 R9 g6 z$ f8 ofor(i=0;i<h;i++)  L% O  }# P4 D$ d% A, F% J
{
' w5 A# R+ N% j/ j$ D+ lfor(j=0;j<h;j++)
( F, o+ T' m9 {4 n7 Uprintf(" %d ",a[0][i][j]);
  ]# d. C* \. F7 O: t/ ~4 ?' fprintf("\n");
" [/ Y; `3 ?' |8 ^6 M1 [6 ~}7 \8 a' l5 Q7 A' G5 f% Z
warshall(a,h);: ^" x( L# Q' F+ F. U
getch();1 u* D) F7 F# H5 h9 `& I0 ^
}
( ]4 O7 J1 M6 A( i" tint jisuan(int a[N][N][N],int h,int z,int i,int j)" j1 K. v# k' y3 z$ p
{
/ ~& r0 u8 O; w& t+ c) T& R! G* l  c: Iint s,jg=0;
- `, g- d; v2 Lif(z==2)
0 Z  R% _3 }: M( R! z/ pfor(s=0;s<h;s++)8 y4 b6 s3 w* D& g6 B
jg=jg+a[z-2][i][s]*a[z-2][s][j];
+ S3 y# z5 F' c, \+ C9 Lelse
9 P: X5 C3 N2 R  `4 bfor(s=0;s<h;s++)
( y0 z% ]. _' _% `' r' _5 N% yjg=jg+a[z-2][i][s]*a[0][s][j];
3 N- G: m5 I/ I  c/ X. M( _return jg;
9 ]+ I1 G' s3 e2 E" f) G- D}- O8 ?: M# j* l8 s+ d
void micifang(int a[N][N][N],int h,int t)' r# h9 G) t+ |+ N% y! S! S$ A
{+ Q8 y7 s9 v% |$ S5 S
int i,j,s=0;2 z7 y0 U( l, @" v  E7 G0 Z  f
int z=t;4 x# U+ y2 D& ~3 }  l* N$ D& t
if(z<h) //矩阵的值不全为零。
# K9 W* j( D; F/ v: S$ G% L" a. R- f, P{ 3 b% v% q% q: l
for(i=0;i<h;i++)
; x' v6 Q; C/ c6 T- m: jfor(j=0;j<h;j++)
& W4 c$ h% r+ H: S  {a[z-1][i][j]=0; //全部赋值为0!; ?* r/ @3 ^& @  @6 F* H
for(i=0;i<h;i++)
& N4 P6 m" P3 M! f' T# x2 Pfor(j=0;j<h;j++)
$ c- j! r' o) L, j+ ua[z-1][i][j]=jisuan(a,h,z,i,j);
- Y. x) \* t6 {. h5 {$ Kprintf("\n矩阵A的%d次方为:\n",z);  c  q5 W" o- I0 k2 m- f7 b
for(i=0;i<h;i++)  s% Y1 J; U! N; R' V, X2 e8 r
{
. T  Z( G7 y! H) [" Y5 cfor(j=0;j<h;j++)( t/ z- k% E5 j; t9 x: R; r6 C
printf(" %d ",a[z-1][i][j]);5 i) F5 L* S6 u- l
printf("\n");
' Z) W; f: [/ ?" R}. e+ o# S9 v/ D: H
micifang(a,h,++z);
" Y+ c5 a- g9 i, e}! q' {* U6 a- T7 |7 O
}  S' ~. R8 q/ J4 @1 O. Q  l
void buer(int a[N][N][N],int h,int t)2 }: l$ t) W2 ]+ @$ y' M" P: _7 I
{& t- n2 ]3 z; [" {. p7 ?( I
int i,j,s=0;2 N2 u) H. v9 U9 `- f
int z=t;; D* O8 J- E( _. E' t" y1 @
if(z<h) //矩阵的值不全为零。& b. L! Q# V$ a' M
{ : ?6 ~/ z( s8 h' G
for(i=0;i<h;i++)
9 `+ ^. V& b. V, y, I' K+ V, tfor(j=0;j<h;j++)* C* _! w( [$ J& `
a[z-1][i][j]=0; //全部赋值为0!
- z- H4 Z; Z: \% h, t1 y% T7 Y0 D5 m2 }for(i=0;i<h;i++); B0 }2 M4 W  H8 U! |3 G+ v
for(j=0;j<h;j++)  U0 J" h3 I6 @
a[z-1][i][j]=jisuan(a,h,z,i,j);
! n8 n) X7 s; c4 m4 N4 [printf("\n矩阵A的%d次布尔幂次方为:\n",z);
( _8 b8 u+ e+ [, u0 \# o9 I1 lfor(i=0;i<h;i++)* _- n: O' ?- B9 y6 A* h& R
{
" k( z3 |0 X2 K9 Mfor(j=0;j<h;j++)( d1 Q- T) W5 J( j  W, R
{ , [/ ]% y* G- q7 ]* u
if(a[z-1][i][j]>1)
8 n6 h8 r$ e/ W( q& U& I# D. L& A8 aa[z-1][i][j]=1;
; J+ Y  I( c& t# uprintf(" %d ",a[z-1][i][j]);
  w* _8 r/ g# @4 C' f}
" A- g% v$ D3 B% ?) Y; f/ aprintf("\n");
/ q, J* C( A/ v3 b: `}
& q2 n$ [4 p0 s& H% m  K& ?buer(a,h,++z);
2 X) X: }  F! a$ I, N}! H, L/ y! ^# L" e# K: I0 V  u
}# O% z: z& Y6 i( G2 F* \" I4 A1 v& \
void warshall(int a[N][N][N],int h)  F* b% h: t1 a" ]1 v# m
{
  r6 g# ?& w0 @int i,j,p,q,r=0,s;
6 d1 z) u7 V$ G- jfor(j=0;j<h;j++)% }( S" M4 ~7 g: g5 O/ Z6 P( V
for(i=0;i<h;i++), l! m) Z' Z, _
if(i!=j && a[0][i][j]==1)
! u6 _; Q$ [, o0 q! d/ L! [{
! C, S; X" O; z7 dfor(s=0;s<h;s++)
' x- L8 a9 _" C# P* `& o{
* ^% f; Q2 ?+ J) Z$ @a[0][i][s]=a[0][i][s]+a[0][j][s];( i: J+ F! j5 N  ~8 F6 N( C# f. o
if(a[0][i][s]==2)
  D" k$ P& \- l' q# u/ p2 f0 Ra[0][i][s]=1;" d4 l% \  x" t% V
}
0 w, @7 z7 W- Q' V7 nprintf("\n第%d次运算的结果如下:\n",++r);# c7 j; T5 }  c7 ]
for(p=0;p<h;p++)! Z0 ?- v* e% A0 k
{+ I% z- K; D& ], }9 t- b7 J
for(q=0;q<h;q++)
( d2 [/ h' @  O# q" i! J0 L. x) j6 Cprintf(" %d ",a[0][p][q]);) J# `" X0 M9 @4 _6 v3 P  P
printf("\n");2 Q7 U  I3 ?2 X4 C) J0 v
}1 e1 J; _8 F* ^/ C0 \% k  `" N& j
}- `. x$ {" x: z' @" p1 x' W
}
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

5

主题

11

听众

160

积分

升级  30%

  • TA的每日心情
    开心
    2014-10-26 00:18
  • 签到天数: 63 天

    [LV.6]常住居民II

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-20 03:49 , Processed in 0.968137 second(s), 62 queries .

    回顶部