QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"& \# L0 u% a9 ~/ {% Q6 I# M- V
#include "string.h"' n* b& v. U9 L, M$ O8 `3 V* B
#define N 50 / M0 I) L$ h, I7 v5 x% F  S
int jisuan(int a[N][N][N],int h,int z,int i,int j);. @0 O8 Q$ o' ^
void micifang(int a[N][N][N],int h,int t);
4 F( O% n. d: v( p0 i" w/ jvoid buer(int a[N][N][N],int h);
+ }% ~* X- v0 o" wvoid warshall(int a[N][N][N],int h);! o3 f' [, [/ X$ Z# z, V
main()/ |) T# U% K3 q( @7 \
{) R8 c4 M8 y8 k) L
int i,h,j,t;
  s1 D3 h4 W8 S+ k4 ^int a[N][N][N];
- ]! I; L8 y7 `# t$ T% C2 pprintf("请输入邻接矩阵A的行数(或列数):\n");5 S4 e- u/ a" N3 e2 N
scanf("%d",&h);
3 @* S) [" _( f3 Y7 l$ L/ I  Rprintf("\n请输入邻接矩阵A:\n\n");& C+ s; Q+ m5 S! w! k
for(i=0;i<h;i++)
( {+ f; V  C/ A{
8 ^- R% U# f8 h6 N' [printf("请输入邻接矩阵A的第%d行.\n",i+1);$ u) Z) ]0 z: {# Z/ H9 r4 y0 |
for(j=0;j<h;j++)
2 c( H3 ?4 C, m3 A/ Oscanf("%d",&a[0][i][j]); $ x) v3 o  |) y6 S" q( G& I6 B7 {
}' K' \6 W& C. W$ O
printf("\n邻接矩阵A为:\n");0 q; P" K& c# W$ r
for(i=0;i<h;i++)  k, g4 M* q+ r1 w
{7 W+ [+ W9 j$ I
for(j=0;j<h;j++)( I- X7 c, E; p( W; k: ?- \7 ]1 f
printf(" %d ",a[0][i][j]);
6 O' F6 ~; m. ?) v) M; bprintf("\n");9 v8 D* b$ ?# `1 f5 g1 B$ R
}
- _! C% R+ [1 s1 o7 I* mprintf("\n\n\n算法一:\n");
) l& r6 y* N# K3 G3 W- o, Mprintf("\n矩阵A的1次方为:\n");: `4 Y& j( _9 s
for(i=0;i<h;i++)
9 \0 A  a1 l# S5 h) m! l! T  Y{
) ~+ w9 e' m4 L& P/ b# ifor(j=0;j<h;j++)8 J, a# S# f+ N8 m+ C4 a* u7 |7 ^
printf(" %d ",a[0][i][j]);% V% E  v- V- W
printf("\n");* H4 ~. P. J1 L( N1 D% X
}
4 O. e/ F0 {& v6 Mmicifang(a,h,2);
1 {5 v5 G  f) {7 {7 j7 e* wfor(i=0;i<h;i++)  L* J5 b! @- Z* v
for(j=0;j<h;j++)
4 f, W+ j" J$ I  L1 z- Y6 |- ua[h][i][j]=0; //全部赋值为0!  j4 ?1 `# Y1 K3 C$ j, I" d. H
for(i=0;i<h;i++)
* a& i0 D: i: Sfor(j=0;j<h;j++)4 y( L2 \' Y* U8 E8 r: H. I7 V2 Z
for(t=0;t<h;t++)
, j$ u3 b+ \% |a[h][i][j]=a[h][i][j]+a[t][i][j];
$ {3 ?5 K7 l+ {" E! O7 hprintf("\n\nB的值如下:\n");0 m$ ~- b! @! r& ]
for(i=0;i<h;i++)
8 i2 a! B8 M8 {; Q" y{  c( N% |) u- C4 f! S
for(j=0;j<h;j++)7 v' W( G% D( `2 W5 u7 q
printf(" %d ",a[h][i][j]);
/ ~( K- @& |, e& kprintf("\n");
# O# k' [! i. P: b2 I}
4 o4 S. a: b+ N  Q/ }printf("\n\n\n算法二:\n");( L, D- t4 M8 l' q& u/ w( f
printf("\n矩阵A的1次布尔幂次方为:\n");
- {# L: W, ]2 w* n% Cfor(i=0;i<h;i++)
+ o* f7 m) e5 _- n6 `. j- |{
- l7 J- ]$ \' P4 `- [  V  V9 {5 pfor(j=0;j<h;j++); c, Z, ^. v" j3 A5 m
{
+ w* \9 X7 Q  u. }+ u% Y0 Xif(a[0][i][j]>1)
$ j: U$ W* @5 j' k: Ja[0][i][j]=1;0 w( [2 e! y2 I. \" q, Z! Z* g
printf(" %d ",a[0][i][j]);6 r. R; G- E$ N2 h% l: F
}
! E# n* J. X8 P: `( N/ yprintf("\n");* ~7 Y3 b3 V: a, ]: V
}
8 b" l0 o' I4 U4 G9 D6 pbuer(a,h,2);# J" ^" E' w( ]! v3 V
printf("\n\nP的值如下:\n");3 y5 `3 S7 b( _; y( q! w
for(i=0;i<h;i++)
' K. p) m4 C* ~6 B4 v1 N, a( f{
; g+ z, n# z& V- J; z) _1 c3 \% i; @for(j=0;j<h;j++)
3 M7 ?% k/ D* ]5 @. T6 n6 ^{
# f6 A- z7 y9 o4 K( K8 \5 m5 yif(a[h][i][j]>1)
+ t; z+ T: W! G. x8 _: ba[h][i][j]=1;
% J3 b7 l. Q( r5 `6 x7 kprintf(" %d ",a[h][i][j]);$ s: [" T- _% {+ x7 a
}: {; @$ h3 j2 _6 k
printf("\n");; D, C% J% |+ f9 F! k0 p' q' D
}) P+ \  x6 J; x
printf("\n\n\nwarshall算法:\n\n");
( M* }/ p& P2 w+ t# F2 P2 `) H
% k1 e) G* R) z: vfor(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。5 A$ h/ H/ E2 n
for(j=0;j<h;j++)- L" r; B# Z1 t5 F( Y
if(a[0][i][j]!=0)
8 a$ ]; A4 i1 j, \% Q. W8 h2 ia[0][i][j]=1;- i1 @8 I; U7 {( m
printf("整理后的可达矩阵为:\n");
% t( V( t/ K1 X+ S. Ofor(i=0;i<h;i++)2 A- h7 F. h4 P7 x# S& f- a, ^
{( p/ d& R: d' R( E3 i' ~
for(j=0;j<h;j++)4 Z' E" c8 s0 Z# m; M0 I% P$ E4 S9 b
printf(" %d ",a[0][i][j]);4 g  A! c; l, \: x7 Z7 r, x
printf("\n");+ F6 C; p1 V  c& k  K8 z3 d6 k+ \+ @
}$ Z1 M1 h  P3 D1 R! Y, }
warshall(a,h);
, B9 b7 b6 i$ N* Z0 Cgetch();- C1 `+ v$ }0 z+ s
}
0 e& r3 h0 r% rint jisuan(int a[N][N][N],int h,int z,int i,int j)
  ]- Y/ G1 ?+ ?! E{
! A4 V- q; F$ _: ~int s,jg=0;0 w3 ~/ @; m' s# m$ \
if(z==2)1 ~' M! ^8 `3 ?, a9 j
for(s=0;s<h;s++)
% a& a7 _7 C8 @; P2 p+ ajg=jg+a[z-2][i][s]*a[z-2][s][j];# h+ ]: f) T; g  B; t
else
' l( U6 e6 L. ?" d$ Zfor(s=0;s<h;s++)  D) I) r$ J& \# y4 A" y
jg=jg+a[z-2][i][s]*a[0][s][j];1 p+ x* K$ f" i$ f  }
return jg; 2 }" i/ a" G- A
}
0 }+ |2 X. ]( yvoid micifang(int a[N][N][N],int h,int t)
* c6 k2 r! O2 f( N{$ p. q% K- m: R" w) X
int i,j,s=0;; C# F: V; L/ d. v+ I. Z- ]4 b
int z=t;
2 E/ b# w+ V* w$ v  H- Vif(z<h) //矩阵的值不全为零。" |3 z9 B8 R& Z) [6 }- y. V; J
{
6 W% m0 W! F+ H3 |- p' kfor(i=0;i<h;i++)
6 b0 e" e; t5 q" b. nfor(j=0;j<h;j++)
  x8 _0 B8 n- v8 Ba[z-1][i][j]=0; //全部赋值为0!; e5 N# C; T$ I5 G$ i! _% G% E0 A
for(i=0;i<h;i++). C$ L2 r6 A5 J6 U6 c$ W9 k
for(j=0;j<h;j++)7 {) s, r: Q8 G  ]5 @
a[z-1][i][j]=jisuan(a,h,z,i,j);
7 x, o9 ?( [# yprintf("\n矩阵A的%d次方为:\n",z);
# o. w) t$ E; mfor(i=0;i<h;i++)- a3 y8 D0 }" C1 O* U
{/ d" k7 B3 `8 G/ \$ o4 Q$ [
for(j=0;j<h;j++)
  f% @. Y5 |1 I6 iprintf(" %d ",a[z-1][i][j]);
& p) A; P1 c, \6 Q$ `, ~$ M5 Mprintf("\n");
( P& Y7 c- r2 T' E* k9 n}
9 d) \, c) R: r6 hmicifang(a,h,++z); 6 u4 g. G, W7 o, |" N
}' @4 j9 R2 Z% [, e! L5 O
}2 h4 z# q. X2 C5 A$ E# u
void buer(int a[N][N][N],int h,int t)
  G: T" r& K% f2 B{3 L- R! x$ ]+ C0 _
int i,j,s=0;
% M" G, }7 A6 Q7 {int z=t;, f) o; t/ U! }
if(z<h) //矩阵的值不全为零。$ G$ J+ q" |9 C, O0 o
{
0 _# e" w( e$ d2 n! n" Jfor(i=0;i<h;i++)
1 h. x/ b5 h6 zfor(j=0;j<h;j++)% {( q1 X( G) L5 A" R' k
a[z-1][i][j]=0; //全部赋值为0!
; r1 D  o% w4 t4 T& y& o% pfor(i=0;i<h;i++)
: @, H) g" B6 K0 P  Tfor(j=0;j<h;j++)
% z% G: q0 S+ z1 |1 M  w6 A; Wa[z-1][i][j]=jisuan(a,h,z,i,j);2 M3 G6 e+ s3 g
printf("\n矩阵A的%d次布尔幂次方为:\n",z);9 ?* m6 ~  D5 L9 _9 i" o
for(i=0;i<h;i++)
4 V" ?  S8 _& }7 \4 h{9 h, [' z6 [) r" H+ d* {- N* v9 z
for(j=0;j<h;j++)
  _2 B3 i& n9 ^/ V# d( H; n{ 9 n. a& I6 |; ~0 F- e" `
if(a[z-1][i][j]>1)0 F$ X1 F' ]; r0 v; n8 l) C
a[z-1][i][j]=1;   n! I* b, I- E8 e" ]+ b
printf(" %d ",a[z-1][i][j]);$ A! F; k2 ~1 f9 o+ Z
}7 J" }1 z/ F+ u3 }
printf("\n");
7 Z8 Q8 B- d+ I; e+ c}
- u0 f8 s5 w. U' ubuer(a,h,++z);
7 l% F1 r8 z, i$ b8 u7 \& p}
0 Q- m8 }% }' z* m, n& a1 \}
1 E0 |6 [1 x& w# h# ]' v) Y; B( qvoid warshall(int a[N][N][N],int h)% q5 m4 [' j1 N
{+ T; r2 u0 ~! S% N' ^
int i,j,p,q,r=0,s;
# \" j* E! A7 h" V6 G5 i; B4 }6 Y* U5 wfor(j=0;j<h;j++)
. m. o; g- \7 s6 M; `: @for(i=0;i<h;i++)
: n, S9 a1 M9 O) e* v- wif(i!=j && a[0][i][j]==1)! J$ V7 o; Y$ v7 ?4 I* M: I% L% c# g
{6 I8 p( X9 e' @
for(s=0;s<h;s++)
, g! W) l# C/ k: e; i% |' G{ & f$ ?7 E# l/ o- {7 Y
a[0][i][s]=a[0][i][s]+a[0][j][s];6 e. |; I3 k, }6 t7 z: \
if(a[0][i][s]==2)# z% S) @2 U$ V, A
a[0][i][s]=1;- y  E( J% s7 _' M2 L" G
}
& @1 d! m4 ~: p' q9 F) [printf("\n第%d次运算的结果如下:\n",++r);) B9 x; M; N( E$ G& Z
for(p=0;p<h;p++)
& {3 _8 j: v9 M# x0 j  @{
/ k/ f5 v, Y  Rfor(q=0;q<h;q++)
4 Z$ O/ q& m4 z, Nprintf(" %d ",a[0][p][q]);
: h) _6 l; d" W, Mprintf("\n");
4 N9 I% {. V& o' T4 z+ V3 x! _}
7 c8 @8 g3 x; [/ H0 k+ C  ~}
" g" w( }9 P  d" _! `: \+ \}
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, 2025-11-19 02:54 , Processed in 0.938166 second(s), 56 queries .

    回顶部