QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"
% X) p8 T  J1 k& L1 A' _#include "string.h", S/ K1 E# \: K8 D/ ^
#define N 50 4 C8 c3 B2 R2 E8 S
int jisuan(int a[N][N][N],int h,int z,int i,int j);! B/ p% I( `. {/ c) e' G
void micifang(int a[N][N][N],int h,int t);
& H; N& c) d6 b3 @void buer(int a[N][N][N],int h);
3 f. C! C' W% q: P5 D1 s7 Kvoid warshall(int a[N][N][N],int h);
% T; i9 R, X4 E- z8 v5 P/ K, Lmain()
2 w! T$ h! J& ^  o; f6 c{
0 o' r3 K) D& ~: z0 \' oint i,h,j,t;: r; M8 {" t& i) a
int a[N][N][N];- c8 b% ^; }3 u6 t
printf("请输入邻接矩阵A的行数(或列数):\n");+ c4 h1 [/ J# y& D& T
scanf("%d",&h);
9 E" W/ @( \$ F* sprintf("\n请输入邻接矩阵A:\n\n");) \! K# L$ y: T1 L2 N
for(i=0;i<h;i++); ^3 V  x0 P! {9 x! K' ~6 _1 f
{& A  ]3 X. J0 F( l$ K/ C
printf("请输入邻接矩阵A的第%d行.\n",i+1);
) A% a- ]5 l. m) K3 h* z; a1 Rfor(j=0;j<h;j++)& L0 j! {. a) W) c
scanf("%d",&a[0][i][j]);
' F$ v! i3 R* R8 i6 L}% T1 j; a2 G4 |; @: ^: p! d
printf("\n邻接矩阵A为:\n");' R9 X: H& n' _  k& b4 C
for(i=0;i<h;i++)6 [- }0 R( w1 t  [# S( A
{
: `6 f: |+ p9 a, w  F2 Dfor(j=0;j<h;j++)) L  E9 @' V7 ~1 l) u6 i
printf(" %d ",a[0][i][j]);
  W9 O; q( W! ]6 n) P& Rprintf("\n");9 c5 @& \7 l! t
}
. ~- [2 U2 y; fprintf("\n\n\n算法一:\n");
" H! U& W  @/ x6 Fprintf("\n矩阵A的1次方为:\n");$ S1 \5 _% [9 z( H) t! H5 S  M
for(i=0;i<h;i++): o& s. z- J! i; ?( }
{& N) s7 P8 `$ w4 g: R+ `
for(j=0;j<h;j++)2 U/ k6 @% a# H6 F- |( E
printf(" %d ",a[0][i][j]);
- Y1 g7 I" v6 Y- y. P% }0 Oprintf("\n");
7 @& p: F  ]+ q' Z! |% C0 j, ~}; K7 W% s* l2 y9 \2 ^1 G
micifang(a,h,2);
3 s$ d3 m3 a& _5 ifor(i=0;i<h;i++)* i6 U3 v+ {) F+ r
for(j=0;j<h;j++), @; a' u: M: [+ I4 f
a[h][i][j]=0; //全部赋值为0!
8 u% T8 n& k6 gfor(i=0;i<h;i++)
# P* G+ q. \. \for(j=0;j<h;j++)
. X! K. k4 M; p* lfor(t=0;t<h;t++)
8 i- ?/ O4 L3 A( y% Aa[h][i][j]=a[h][i][j]+a[t][i][j];
) X+ d3 F! r( jprintf("\n\nB的值如下:\n");: U+ b1 L8 b! K( `; U
for(i=0;i<h;i++)8 z1 c- r) J# E1 I, ~& Y1 Q9 i$ R
{- h/ r! Q! h% X
for(j=0;j<h;j++)+ F- L2 ?; [/ s+ r8 j6 v
printf(" %d ",a[h][i][j]);
5 m+ r) u6 `1 t  D4 B" zprintf("\n");, u3 V0 O5 ?( v, L% \
}
" u/ k4 F' K% ]/ Oprintf("\n\n\n算法二:\n");; [3 l# k7 p7 a7 r: i$ S" c  @; S2 e7 C
printf("\n矩阵A的1次布尔幂次方为:\n");" @5 l# k( `4 o
for(i=0;i<h;i++)
5 Y9 {& k- Y* \) N3 k( G{
2 Q$ ]" _& m3 x: @$ u% ?for(j=0;j<h;j++)  R* I4 z/ [4 g# G$ r# k) R
{
8 A$ H: b6 X5 Xif(a[0][i][j]>1)
. L9 W* t& V1 {9 P. x* Ua[0][i][j]=1;& K. `  C. F; M5 H! K& ?2 [! @
printf(" %d ",a[0][i][j]);7 l" n4 M6 A* F- a* @4 d1 [
}
, ~: c( J9 {% r" m6 |) s' Sprintf("\n");
$ M* _& h( M! a2 N5 H7 L* {}8 A/ V+ \0 f3 J: V5 m9 w4 _- v, b
buer(a,h,2);' b# U+ J5 U- H7 p2 }
printf("\n\nP的值如下:\n");
' j' v# ]" I. K3 K$ h9 g( [1 K3 Nfor(i=0;i<h;i++)
# ~4 V3 L, Y) i. @! Z{. k+ o9 t- S; C- {
for(j=0;j<h;j++)0 _- j- r3 R! G; R. M* w, e1 V
{ ; L- U4 S- O) M2 {* m% B
if(a[h][i][j]>1)
4 m1 O5 c, A5 o7 s; L+ B1 f+ h* Ra[h][i][j]=1;
* o3 @* W' t8 a  T6 Q9 D7 dprintf(" %d ",a[h][i][j]);- r, @: H! c; G! o5 I$ E9 H
}
# p- G8 ^5 F, p" I3 q4 D7 Sprintf("\n");- k% U" R# V6 G6 G" Z; Z
}9 |% S/ j( e, g- k" k! m1 k
printf("\n\n\nwarshall算法:\n\n");
) G' T, n: N( L; X/ g
0 c! Q1 G0 l1 sfor(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。
/ ]8 V$ y% _7 i" }" C& |for(j=0;j<h;j++), J- ^+ t1 A7 H8 S
if(a[0][i][j]!=0)
: h3 t6 R* m: A7 ia[0][i][j]=1;
! C! z# E* X. }2 S  O( Fprintf("整理后的可达矩阵为:\n");4 l- B' r, `6 ]$ b
for(i=0;i<h;i++)/ b7 v% J" m& T3 O# d$ s/ u# }. j# e
{
9 x3 [* K! E! u+ ?for(j=0;j<h;j++)
/ u0 x4 B9 E0 r' ~4 G5 [& bprintf(" %d ",a[0][i][j]);' B& A8 |% Z, \  ^; t
printf("\n");
. n) G* u- Y' A9 d}. D6 a! H/ Y2 b' R) a! v  B$ O! [9 K
warshall(a,h);3 p1 i) h; k  F& F
getch();
6 n6 r9 {0 T3 S+ x4 @}8 Z% t3 j. _& g' M7 \2 R
int jisuan(int a[N][N][N],int h,int z,int i,int j); ^( v0 C. k5 R: A8 a2 G6 E
{
9 b4 ?$ z$ @" w* E5 X) Q$ ]int s,jg=0;
7 w9 A( N: I( W# w. Bif(z==2)
& C& F  |3 h" r2 b6 Z2 D4 a0 ?7 zfor(s=0;s<h;s++). a/ w1 [3 i# a% H
jg=jg+a[z-2][i][s]*a[z-2][s][j];
) _5 ~( X; g1 P- J( b+ welse   C9 _/ O1 v/ _: [' O6 J" R9 U
for(s=0;s<h;s++)1 `8 L( k5 ^, p+ e% B" ~
jg=jg+a[z-2][i][s]*a[0][s][j];
1 q1 _: h, f1 h& Hreturn jg; * j6 [; e* Q  M& i8 J4 i" j: d
}, K3 z9 i! h( L' w% B' S# E+ }
void micifang(int a[N][N][N],int h,int t)
+ s2 z' \; |' D+ m% C* p. N( ]% P{
) ^7 ~8 w9 z  \# a* p" [3 aint i,j,s=0;4 H5 f7 H3 Z& t0 p* b9 G
int z=t;
* r/ I  Y8 A) v$ t4 k: g! `% R  {if(z<h) //矩阵的值不全为零。8 x# \4 d/ E6 j9 l# C9 L1 w
{
4 U) f2 |/ `: O% s# D$ w# Y+ pfor(i=0;i<h;i++)
7 E1 f2 ]1 X' p7 T* w8 E( F7 Afor(j=0;j<h;j++)
  i( H- `3 H- s- z) ]a[z-1][i][j]=0; //全部赋值为0!7 v1 b- i. o3 r  [3 w" \  m
for(i=0;i<h;i++)0 p: }1 j" E1 L# A
for(j=0;j<h;j++)
: g) c# w1 i, D0 ca[z-1][i][j]=jisuan(a,h,z,i,j);( P8 t' D' X. U0 `3 U  I; [) Z% w: M
printf("\n矩阵A的%d次方为:\n",z);
. {9 p3 J4 |6 {& U# M# Pfor(i=0;i<h;i++)
. S* O7 p3 C2 e& ~7 H. ^{
5 t9 R% g8 f6 K  w  f1 o+ bfor(j=0;j<h;j++)$ g6 G" I! a6 m9 c6 C6 a% Z+ f  ^* O
printf(" %d ",a[z-1][i][j]);
* J7 ?" m" O3 j  {printf("\n");5 E. e# z/ J$ v  G1 V: {
}+ x3 s' [- S/ S$ \6 g. Z0 B
micifang(a,h,++z);
+ ~1 ?2 N, P- |% N/ u}) o& N5 z+ m  K4 W  I0 o3 `
}
. c: P3 Q, c3 }4 A1 W7 _void buer(int a[N][N][N],int h,int t)& v: h% D- ^9 J% z6 V
{, l9 k- ?% ~' m- E9 `
int i,j,s=0;2 j) N% [2 P+ o& C2 M; Z' a( h) L
int z=t;
1 j$ U) B' x2 e3 r0 zif(z<h) //矩阵的值不全为零。8 \1 `; X, R# a, u  Z) D
{ : y4 N' k/ N! p, @0 |8 d: M
for(i=0;i<h;i++)
: X: M8 [5 o  @1 z2 a$ [( L4 Vfor(j=0;j<h;j++)
7 D  r) }; O! g% |0 {a[z-1][i][j]=0; //全部赋值为0!& p% n0 I; T2 I$ p! I
for(i=0;i<h;i++)/ q7 B2 R- _# \8 d% b& v
for(j=0;j<h;j++)
, b6 r5 d: ?0 N. g# Ia[z-1][i][j]=jisuan(a,h,z,i,j);7 p. H0 |0 C! t
printf("\n矩阵A的%d次布尔幂次方为:\n",z);; w- {1 l6 P$ d" g1 v" K6 Z) g/ x
for(i=0;i<h;i++)
: L  D. D* s: e( m- }$ R: [* J- g( ~{
' Q$ \% y" S4 _( D8 i/ W& hfor(j=0;j<h;j++)9 v# ?9 f" H7 H
{
4 y0 l1 G. t' C  L( P; C2 u* uif(a[z-1][i][j]>1)
5 Z3 f  j  ~2 Y% \8 Ea[z-1][i][j]=1; 4 \  T! V) }- D
printf(" %d ",a[z-1][i][j]);; V- r2 R- q9 I; j6 o) C# i" r
}) b/ l8 N& a# p: _+ j9 n6 W
printf("\n");
8 W) J. K; w/ W+ ^$ D) @8 i}& R$ R0 s) _- A: \7 Q
buer(a,h,++z);
: q  Q, v4 F, M; y2 U; {0 Y}
- m% `6 @* C. v6 j3 G}
6 F& a% S9 B, C8 M+ |2 evoid warshall(int a[N][N][N],int h)' G3 O+ e, u& H; Z) D  f
{
9 X  p+ g: e7 c8 E  g/ F. bint i,j,p,q,r=0,s;
1 c5 o7 H5 J( c! \- ?for(j=0;j<h;j++)
1 {8 h# w# {2 H% R, S, U( J9 nfor(i=0;i<h;i++)$ Z% ]) Q" C  x7 D9 s4 z
if(i!=j && a[0][i][j]==1)" E! N5 C1 O7 r% W5 l$ ?
{
+ }3 C8 n& a- z5 N0 Yfor(s=0;s<h;s++)
- L6 \- o' {. L6 z: x{
& T& l+ |( c. `, Y% K  ga[0][i][s]=a[0][i][s]+a[0][j][s];# [' F$ Y( D/ K8 \4 s
if(a[0][i][s]==2)
7 a, e5 K7 B9 @& n+ n& I# S$ qa[0][i][s]=1;
- A* A8 J& a$ o" `( o}
# h8 p/ e4 q$ Z/ ^7 b+ @0 w, Aprintf("\n第%d次运算的结果如下:\n",++r);: B5 s. ~- T0 h0 H1 }" B# E
for(p=0;p<h;p++)
  G6 \4 c, ^- T4 h) Z, {{
! s9 L, ]1 I; X% U$ {, C8 Qfor(q=0;q<h;q++)
7 o( K1 E$ }5 X7 M. [& Eprintf(" %d ",a[0][p][q]);8 ^/ H1 J6 j# E1 R8 i) }
printf("\n");" d% ]; x. \& s$ e% |
}( I9 M  I" j" a) B8 D; t/ w
}' i. J, Y2 F9 @, F
}
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-4-21 09:55 , Processed in 0.473957 second(s), 62 queries .

    回顶部