QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"
1 G) D2 P& T! O8 f9 X- N#include "string.h"3 b! v' N  V7 \0 d7 P! T. H% q
#define N 50 " a7 \' G  l' r0 V: }
int jisuan(int a[N][N][N],int h,int z,int i,int j);: a! R' R6 q- `. }
void micifang(int a[N][N][N],int h,int t);, _0 `; e* w* n3 N4 [; f- _
void buer(int a[N][N][N],int h);
" G; u( f* x& c( G0 u/ x8 ?void warshall(int a[N][N][N],int h);. y# J$ G" x, B$ a$ c5 g% [
main()9 Z$ K9 z, B% K. x
{8 p0 e' k- d! {% H' I7 \% Z1 P
int i,h,j,t;
4 y% g" w* Z) W4 v1 l3 L) ~& p2 gint a[N][N][N];8 i7 r# n; @* l
printf("请输入邻接矩阵A的行数(或列数):\n");
8 P8 B6 B1 j  h4 }scanf("%d",&h);
' s, H" Z# R( P/ A# Fprintf("\n请输入邻接矩阵A:\n\n");' x5 g! T+ p/ S3 a9 `! A% q; W2 d+ Z/ D
for(i=0;i<h;i++)
7 o$ l' i2 O9 `+ e6 J$ u{; B* `0 f4 m, [) X( o; ]! U4 t
printf("请输入邻接矩阵A的第%d行.\n",i+1);
  j1 c) A  @5 n7 o4 b' lfor(j=0;j<h;j++)  E) D) e3 `9 x1 B: l! Y
scanf("%d",&a[0][i][j]); 3 ]; i+ z/ a/ J( ~' F2 F
}9 I$ n) V9 n# N$ n7 K0 f6 J8 s
printf("\n邻接矩阵A为:\n");
3 W$ K! K6 h/ y9 T, Z3 ffor(i=0;i<h;i++)9 c8 M7 H5 {# u/ q: G& C
{% G. j. {/ b/ h
for(j=0;j<h;j++)# m  u: Q$ d4 B# C! I
printf(" %d ",a[0][i][j]);9 ~  c' W7 c0 n; @+ L; V
printf("\n");( r& l$ d1 j$ G# @: c
}, o/ K, F+ f* B8 F' C
printf("\n\n\n算法一:\n");
0 T. M* z0 W; O/ D% w0 j) @6 ]  f  a3 l* R* nprintf("\n矩阵A的1次方为:\n");, O. `* B6 S7 c/ P2 O7 e
for(i=0;i<h;i++)3 R# q, Q6 S3 W; y* q+ j% W: U7 ~" ]8 ^
{
6 ~! S; L6 A7 W4 Mfor(j=0;j<h;j++)
2 H/ p' D- J$ L0 Lprintf(" %d ",a[0][i][j]);
% i5 V2 f' O; S8 `$ T! Uprintf("\n");
* M# Y9 y7 L% `% a( c}4 z7 L0 w( G7 }2 G) d
micifang(a,h,2);+ Y" T/ ]$ |, U. N
for(i=0;i<h;i++)) E8 V- a5 l: ~8 q5 @  Z
for(j=0;j<h;j++)
* ^  W9 \% R( `; h( ]a[h][i][j]=0; //全部赋值为0!
/ Z: T( _+ [. m. Q; Nfor(i=0;i<h;i++)
/ |! P- M. t0 f  e4 ffor(j=0;j<h;j++); @3 W4 d0 Q; N9 ~, e: m
for(t=0;t<h;t++)
5 J, I9 i3 @( p& a* B  U* [$ _; w- y& aa[h][i][j]=a[h][i][j]+a[t][i][j];
- m0 x$ Z* H% C& t6 Rprintf("\n\nB的值如下:\n");4 H# V8 C9 k4 ~8 a7 q3 P
for(i=0;i<h;i++)
5 r4 j& `" G& Y% K. Y2 ~{
/ M) e/ i$ u! N% I$ j& ofor(j=0;j<h;j++)
2 ]$ m9 [7 e' r  oprintf(" %d ",a[h][i][j]);
9 F6 E( V( {5 ?) [3 Lprintf("\n");
) [# |3 @2 f8 c% y9 r# A! u}8 Y/ _) }+ l) G! Z
printf("\n\n\n算法二:\n");" z8 u* E( t+ A! s- B
printf("\n矩阵A的1次布尔幂次方为:\n");( U2 \1 \. h/ |8 Q- T
for(i=0;i<h;i++)
1 A8 v( x, A1 y; E9 i$ S; v2 g{" ?4 U2 g( U: d; m8 F3 f
for(j=0;j<h;j++)
9 M& c8 N7 L0 c( A{  ?" F% l9 k, b  W+ o$ X% Z: A
if(a[0][i][j]>1)' z- _' Z1 M  k1 m& o$ X
a[0][i][j]=1;; L7 c9 ?$ q: B* q
printf(" %d ",a[0][i][j]);4 F' d. a; \1 J' o" }
}% ^( M! @$ s) e% L; R
printf("\n");
7 }9 P- Z% b7 e& ]( S4 \}4 L. A5 k* H3 I( t. f* b$ ?* E! V
buer(a,h,2);
/ i8 r! K/ c+ n" b" W1 S. i/ `printf("\n\nP的值如下:\n");
; a  k. ~7 t# C5 r1 y. vfor(i=0;i<h;i++)+ E8 _8 V4 H' N* ]+ F7 J
{, Z! b' w* q" H/ b' J0 ^
for(j=0;j<h;j++)
7 A; ?2 O3 d9 v) E- @{ 7 I9 ?  r6 e1 I# F( `2 z, f3 i/ |
if(a[h][i][j]>1)0 ^" g& w) \. y( [
a[h][i][j]=1;" Q2 x9 R5 I! ]$ e5 o4 N. p
printf(" %d ",a[h][i][j]);
% c4 y0 H7 i+ b/ y+ b}
1 r- I, }9 t: {0 uprintf("\n");5 R8 k" z) r  R& p& _2 W* J
}
0 J* v1 G8 f3 q  u; hprintf("\n\n\nwarshall算法:\n\n");
; L  Z) M! v. X8 i
' a& s' v5 G, |  H& D) `for(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。4 _1 v5 V% o/ H& m+ z, j
for(j=0;j<h;j++)4 b: i2 x, B: n2 q) A
if(a[0][i][j]!=0)
/ R2 C7 T$ J& b# m  |a[0][i][j]=1;) }2 L! k4 c/ l2 p  B8 X3 r
printf("整理后的可达矩阵为:\n");
; i+ _( `* x1 E7 L' nfor(i=0;i<h;i++)0 V5 T8 R8 S& n8 u4 i
{, p, ]' A( Q4 o1 O* o# T, r* W  H
for(j=0;j<h;j++)
5 y  v' L7 k, w9 }* Pprintf(" %d ",a[0][i][j]);' X% j" j. ~2 C( D- E  s
printf("\n");7 ^9 |4 b/ x  z$ N% r) v& z* F0 t
}
. J% k+ @: E) P' i/ cwarshall(a,h);
5 G  c$ }7 a7 v  E: Z* a' Hgetch();
, T: j  ~- X' j& o$ P1 Q# x}
5 `5 t2 y& |  {* M* T" |int jisuan(int a[N][N][N],int h,int z,int i,int j)0 O% q) }. h) b0 w$ S  c' G+ c( x
{) j7 @1 k9 n1 h0 G8 Q' Q
int s,jg=0;  \/ F) n( h( @' p$ o, H8 r
if(z==2)5 n: j+ m# ^: ^5 P
for(s=0;s<h;s++)0 f; n2 f! {' w
jg=jg+a[z-2][i][s]*a[z-2][s][j];
, p$ |% p$ j+ m; v# yelse
% U" f$ k, d1 B6 w2 C2 F4 _for(s=0;s<h;s++)
, G. h: s' {7 g. }jg=jg+a[z-2][i][s]*a[0][s][j];: T3 g( m) j7 c; x# ?1 m/ x
return jg;
! g% m' S8 m3 H8 z3 h6 t) y}5 D, l: i* g: @: R; Q  R2 n
void micifang(int a[N][N][N],int h,int t)+ u) R1 i' m5 ]) J! g) j
{
" o1 V6 F+ \$ n" z! p5 p. w# Vint i,j,s=0;
8 e# z$ x) r9 ^4 h# nint z=t;
$ Q7 z& ?0 H  x5 H% x, F! vif(z<h) //矩阵的值不全为零。
, @: o# t" B+ _: k1 c  |{
( P% P( T7 r( M, @for(i=0;i<h;i++)" X' I2 G/ [- H" C
for(j=0;j<h;j++)
! g& F: C; Z/ a/ y4 p" K  Q7 ]a[z-1][i][j]=0; //全部赋值为0!0 V# k2 L: r- [0 U+ H: j& W: l
for(i=0;i<h;i++)
9 U( ^4 L, ?6 x1 jfor(j=0;j<h;j++)
1 v, j; p4 B* H( E$ W" na[z-1][i][j]=jisuan(a,h,z,i,j);
% X. x! R2 g: h6 Y; Wprintf("\n矩阵A的%d次方为:\n",z);
6 u5 o+ V8 u2 ^: P- o3 }+ ^for(i=0;i<h;i++)
" M+ b; [- J, i7 F: h1 g{0 R5 t4 e" {' P, {
for(j=0;j<h;j++)
- p* S: v# t8 n6 k* j5 j. i% U; _printf(" %d ",a[z-1][i][j]);  ^8 B; \1 t: V
printf("\n");! y) ^  `. {! F& H4 k
}* ~9 {4 y" P" K+ S& D
micifang(a,h,++z); : M4 S3 \& ^( h! ?9 W, f8 G; z- _
}" j: l, x' @. ~8 ~
}. \3 `) b9 t. v* C7 D
void buer(int a[N][N][N],int h,int t); p* U0 V6 p. q7 D/ U4 H
{
+ P* B1 C8 P, t9 m; hint i,j,s=0;7 I- v1 l* N! m. T, Y5 `+ {
int z=t;
, Z$ C: k( @5 ?* U* c9 ^8 Y5 v1 yif(z<h) //矩阵的值不全为零。
. V; d/ u2 o' c& p+ y{ " W. q9 \% O8 l. D. h) v
for(i=0;i<h;i++)3 l0 v0 z  Y/ G" s# W
for(j=0;j<h;j++)
# f" B5 {" t# V  \. q, W7 Ra[z-1][i][j]=0; //全部赋值为0!( D  \; {. K$ \
for(i=0;i<h;i++)1 G2 d  O3 g" A7 P5 P) U0 Y
for(j=0;j<h;j++)
8 S' N! E3 J/ b) U8 Ka[z-1][i][j]=jisuan(a,h,z,i,j);; q$ U4 P' V! z; E8 P
printf("\n矩阵A的%d次布尔幂次方为:\n",z);
& c' n3 Y3 i1 e6 yfor(i=0;i<h;i++). @; J  r0 O6 h3 H' |6 I" P
{2 J9 R1 Y  V1 z1 I1 Q5 X& L( a; E* r
for(j=0;j<h;j++)
% p- }- k% [% |0 G0 G{
0 Q( U+ Z$ k5 ~2 J) X7 ?; ?if(a[z-1][i][j]>1)
! p4 J! a& J% o: K; C) J8 Aa[z-1][i][j]=1; $ \$ H, u+ x9 K
printf(" %d ",a[z-1][i][j]);
/ e1 w7 @& Q! y9 U/ G' p( h}2 C- |1 p' w  c5 b$ Z( a
printf("\n");% {: D& w' ^* \9 Y* K
}
8 q0 ]) i0 Q" s0 R7 ~7 G' Sbuer(a,h,++z); + D/ A0 m& W8 t6 W) T7 k1 I
}
3 K" h1 w/ j& H2 e4 e- m}
/ c3 X- `: @4 b' @void warshall(int a[N][N][N],int h)# c# B, V" U4 S, _# i
{
9 t' k' V% m+ t  E  g; a- ]* W9 oint i,j,p,q,r=0,s;- J# J/ |; x8 M' {
for(j=0;j<h;j++); Z. u+ v/ y- s* G  o
for(i=0;i<h;i++)
2 P& I( V, a* Rif(i!=j && a[0][i][j]==1)  W% [$ J" ^# N1 Y9 }7 @
{
$ H9 i7 u+ f; n% S7 L& qfor(s=0;s<h;s++)5 q* z$ ]* U9 ]  Y# v6 v: {
{ ! u% [! n. V0 o
a[0][i][s]=a[0][i][s]+a[0][j][s];) ?2 y1 L! n$ t( ]3 B
if(a[0][i][s]==2)7 G7 ]5 |0 r2 |4 ^1 Y
a[0][i][s]=1;/ h) ~; n% V' D5 r' n% t
}
8 l7 e9 r  @9 g' lprintf("\n第%d次运算的结果如下:\n",++r);" V* [. R& J8 |8 [3 c
for(p=0;p<h;p++)+ Y. l5 ?9 {- a4 O6 k& ]
{
6 C0 v5 |8 b$ ]) @for(q=0;q<h;q++)
1 e( N/ `6 w+ l; x2 y8 eprintf(" %d ",a[0][p][q]);
& R  P6 k" |$ r' j8 lprintf("\n");- q+ a) A1 a' W' q5 g
}9 g  E8 c% @( N. N9 P
}! V2 T7 o5 l( l" r1 y2 p
}
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-15 02:05 , Processed in 0.410084 second(s), 62 queries .

    回顶部