QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h": D% j( ^7 Y: O
#include "string.h"+ [0 l+ i# A1 Y( F! V
#define N 50 1 B1 }5 l/ I. o3 [, T
int jisuan(int a[N][N][N],int h,int z,int i,int j);1 ~7 }+ D* N$ m3 U8 J6 ~
void micifang(int a[N][N][N],int h,int t);
' ^$ m, l* p* S0 [0 f/ [9 w+ ?6 N! H: ?void buer(int a[N][N][N],int h);3 M8 W! r( K( D5 \: r* h# C3 F5 n' i
void warshall(int a[N][N][N],int h);
& d- G7 B; u( {4 {: v5 A1 ]* d' Rmain()
, [( r3 w% a5 k/ Y! ]{2 \0 n1 E/ u) @! ^! H, E2 ^
int i,h,j,t;0 g& V$ f8 {1 ], b1 f$ T6 \2 V$ I- Y4 s! C0 j
int a[N][N][N];
! \& p# m. ~, x0 e2 c! r! Zprintf("请输入邻接矩阵A的行数(或列数):\n");
7 z' o7 P1 K1 l* v+ T% G4 _6 pscanf("%d",&h);4 {' _% P, L+ q# l& H
printf("\n请输入邻接矩阵A:\n\n");7 K( t2 o7 `" z2 v2 _- M
for(i=0;i<h;i++)" O0 o" W! S1 Q) I3 M1 p; s0 @1 l* ~
{, `7 N- L, [4 L/ E
printf("请输入邻接矩阵A的第%d行.\n",i+1);% D7 K6 z+ W! [% z+ A& U
for(j=0;j<h;j++)
' x7 U% `# }- ?  p0 _scanf("%d",&a[0][i][j]); 5 J( ^/ a* x; ], Y, A6 b
}
% y& E/ G" G5 @1 G3 |; hprintf("\n邻接矩阵A为:\n");
) V. f5 K- H# C% ofor(i=0;i<h;i++)% g& ]4 S+ P; R1 A
{& Q2 l0 O9 p$ M# U$ h+ d
for(j=0;j<h;j++)
' H  H$ ?4 Q, Hprintf(" %d ",a[0][i][j]);: I* O8 K& a* g$ d/ C
printf("\n");
7 I) Y  K* m4 y' A, r}
$ P/ p' @% Y" M: R- Y- n* p/ n( C7 zprintf("\n\n\n算法一:\n");, v! a9 M1 e; R8 i3 U
printf("\n矩阵A的1次方为:\n");, l6 n" t) G+ W
for(i=0;i<h;i++)
8 G/ n. ^$ X. B4 `, `1 g$ D{
  r; r7 m* n# i; \, l! Ofor(j=0;j<h;j++)
* p& g$ m/ ?' r2 wprintf(" %d ",a[0][i][j]);& A" U6 @' u$ }3 M8 I
printf("\n");' b% M* d, ]  I# n* `0 G) Z! V
}5 Q8 O) X, Z% Q% A: g
micifang(a,h,2);5 @6 s8 A" q0 F, j
for(i=0;i<h;i++)
( F, ~( j$ G% j+ Ifor(j=0;j<h;j++)
0 t: n" {! \; z  |' N$ La[h][i][j]=0; //全部赋值为0!- x' N1 S; n$ C' z: P. e% P# ^0 c
for(i=0;i<h;i++)
& Y& q, a. }' E: d6 Zfor(j=0;j<h;j++)
- W2 y2 Q7 h9 y. [for(t=0;t<h;t++)
' K0 H) D# u" t2 v- la[h][i][j]=a[h][i][j]+a[t][i][j];
& J- w% ^1 i& v9 m3 dprintf("\n\nB的值如下:\n");+ G1 O0 L# m# ~
for(i=0;i<h;i++)
% ^* m) B' C. l6 Y" V( h{
' h$ {7 D4 N6 i$ k! j. lfor(j=0;j<h;j++)
; }- R- ]# q8 T8 H" Oprintf(" %d ",a[h][i][j]);
9 |5 ^0 J: ]/ F3 w  t* O  Yprintf("\n");! m0 s; W5 Z; {9 c! L
}- J1 K0 D1 l! G4 K
printf("\n\n\n算法二:\n");' F# a; c6 |3 z1 s, F  R7 V- i
printf("\n矩阵A的1次布尔幂次方为:\n");
, w$ W' H# J  A( \2 `for(i=0;i<h;i++)
9 k. h# _% ?. S/ _7 o# `{
$ L% W) v5 Z2 ?/ nfor(j=0;j<h;j++)
8 Q7 r3 B( U. p7 E+ W{
, Q/ `4 Q% O/ D0 B9 {if(a[0][i][j]>1)2 `, z& l$ r. M# m2 _: z
a[0][i][j]=1;
7 a) Z. I9 ]' T% A' Tprintf(" %d ",a[0][i][j]);
4 a; O: _4 y8 f}
, q# b* |. Y/ p- K# ~5 jprintf("\n");" s: p* H3 `& C% a# b' `
}" [3 M! D$ c$ M; o" `. ~
buer(a,h,2);
1 Y% c1 t  \3 @8 n) Qprintf("\n\nP的值如下:\n");
3 Q- p" D) N) J8 _1 e; dfor(i=0;i<h;i++)
" ]% b0 g  N$ Y. _. R  F{3 e' C1 j/ x7 e/ L4 {  ~5 [& P+ \
for(j=0;j<h;j++)
3 X/ D% X( U' W& B+ v! C2 Z{ : w) |. x5 w+ c, _6 R
if(a[h][i][j]>1), ^% \( x% d4 g2 T2 j" K; X
a[h][i][j]=1;
1 O/ ^9 Y9 n) P6 eprintf(" %d ",a[h][i][j]);
' ?8 g! R0 F& o# U2 p- e" U/ o' ~0 E}
6 p- u; y9 J3 C' ]% s2 ~. Rprintf("\n");7 d: K! `9 n7 w
}4 y; J4 w( V. q% B& ?5 u
printf("\n\n\nwarshall算法:\n\n");- s) _! L; P" h( o
/ h" g0 n/ q1 t
for(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。
8 S0 y9 |* \  {7 }: mfor(j=0;j<h;j++)
7 ~  Z! P7 d6 E9 s0 P" H+ H2 B. j5 Lif(a[0][i][j]!=0); t$ `) Q) D  C. W6 J, ^" u
a[0][i][j]=1;
0 y* Y. y2 S9 f6 v# gprintf("整理后的可达矩阵为:\n");
; v" Z9 \1 g& |3 Sfor(i=0;i<h;i++)% v1 E, W4 m+ r' y5 \* l$ M) u* ?- k
{
/ Z1 D. k% S- n! u, k8 Q( xfor(j=0;j<h;j++)( A& |, F" v* ?
printf(" %d ",a[0][i][j]);0 J3 {1 _. K4 z
printf("\n");, E% ~3 U% q9 Z4 A
}& ?& w  X" e( k) q1 N3 H
warshall(a,h);
5 @, ~7 F2 s6 k2 E9 a3 m+ I7 Sgetch();
7 ]3 q/ _' A- H9 T, W}6 I' F" [, ~/ }
int jisuan(int a[N][N][N],int h,int z,int i,int j)
6 I# m; }( P$ R4 J0 M4 v0 U: o{/ O& ^/ ^6 H9 [! P
int s,jg=0;% R+ N( N% K, V3 c1 k4 I; C
if(z==2)
; {3 f2 C9 @7 ?& t/ J9 S( tfor(s=0;s<h;s++)$ m6 N/ ~+ e: Q/ x1 E  f
jg=jg+a[z-2][i][s]*a[z-2][s][j];; \0 Q1 Z4 v) g
else
' z2 ~( P  H; o: v8 Dfor(s=0;s<h;s++)
# b1 D/ E# ^5 A$ d' |- i1 qjg=jg+a[z-2][i][s]*a[0][s][j];: E1 {1 h* ~. L
return jg;
0 B* X- [) w8 A: I! Y  q  x+ I}
/ A2 l6 i- Q7 N" Avoid micifang(int a[N][N][N],int h,int t)
8 }% F. K7 a, c. ^9 ^/ ]2 j# n{: K  \& n2 H1 }. S1 u6 t
int i,j,s=0;9 ?' k6 g. t- y) n
int z=t;
( ^" \! }2 b/ Q  R7 O. Y& C& H' P' Yif(z<h) //矩阵的值不全为零。! n" G! Z: D  X" }/ e
{ % L+ s% u! \; D9 t# J
for(i=0;i<h;i++)( n0 W4 ~8 J- Z5 N4 P7 V' j! Y. ^, B8 [
for(j=0;j<h;j++)) q2 o1 O1 L9 t+ [6 q
a[z-1][i][j]=0; //全部赋值为0!4 n" S; l1 O& I3 j
for(i=0;i<h;i++)' x9 a0 W9 n) L& a5 B6 i' @8 u
for(j=0;j<h;j++)) H7 M8 l: F* {8 ^0 R
a[z-1][i][j]=jisuan(a,h,z,i,j);
. k$ Z9 u9 ]0 o5 c% Z, q9 n1 oprintf("\n矩阵A的%d次方为:\n",z);
- z9 s, o4 ?$ g6 X, r$ A, wfor(i=0;i<h;i++)
: `) P$ S7 P  j{/ \8 k( S0 P( O  s
for(j=0;j<h;j++)0 k2 G& p; L5 S9 |( l+ T; Z/ g9 q
printf(" %d ",a[z-1][i][j]);- a4 G1 ]5 {6 g- H/ D/ v$ s
printf("\n");5 Z$ O% J+ }8 y! c$ I
}1 i7 Q* v  C! a2 G. l2 w) A( y( u
micifang(a,h,++z);
! Z3 h1 S0 f7 `( f% l9 D}
! f' V$ v- o9 q5 |8 m' Y}
& ^+ B* j* y* G# pvoid buer(int a[N][N][N],int h,int t)/ P" f3 c, V+ R  t$ ?1 S1 x# @
{
$ E1 D1 z, \, D3 Q3 v8 Eint i,j,s=0;
6 D& c0 I: N* ^# mint z=t;
, {- c% ^; q4 U9 Vif(z<h) //矩阵的值不全为零。
% C* G9 H+ Q# G+ s, G- ?9 @  h! L, g{ 1 m7 ]% e( v0 p1 _8 R* t5 e* M" \' j
for(i=0;i<h;i++)' y) d  c- k. e
for(j=0;j<h;j++)4 x6 z9 D/ J/ L3 x1 k  |  f
a[z-1][i][j]=0; //全部赋值为0!
  d  C7 I) j8 b* t8 ofor(i=0;i<h;i++)9 [+ ^! b1 R, t0 A
for(j=0;j<h;j++)
2 e7 J1 E7 j2 Ma[z-1][i][j]=jisuan(a,h,z,i,j);
- h- V% o; `, E& l7 j+ Sprintf("\n矩阵A的%d次布尔幂次方为:\n",z);
7 n( ]  ?4 Q$ z" @# afor(i=0;i<h;i++)1 e7 b/ {% H  g& t* v/ y. t
{, B6 ?4 I7 x8 W
for(j=0;j<h;j++)
  F& P; P5 J$ y; ?, f3 n{
) n) T- e* h$ P" ?% Z( lif(a[z-1][i][j]>1)! \1 [/ o! @; Y; v$ C/ H
a[z-1][i][j]=1; 6 H9 ^, k% @; T* J3 E; V2 Z  s
printf(" %d ",a[z-1][i][j]);
$ ]* {- E$ @5 F: s7 o}
7 ~' r6 l, q2 k; {; q# N+ [9 vprintf("\n");* b$ `, }8 H3 G8 H
}
. D9 b- Q5 R2 J# l& ], X" o' `buer(a,h,++z);
* D; f3 D* H) M" X5 _}
: D! h. r7 u: G. G}
" z* ~3 v$ Z9 U0 z* p) Mvoid warshall(int a[N][N][N],int h)
( u; m: z) P1 i8 N8 ~! N$ S5 o& {6 X  ?{
) @1 r- A$ J5 L1 }7 F1 fint i,j,p,q,r=0,s;
2 U* u, g1 e+ G, i! A! j4 k$ \  b0 C+ gfor(j=0;j<h;j++)
& e% C" Y  t% ?4 jfor(i=0;i<h;i++)" V4 O8 }; w0 V2 R
if(i!=j && a[0][i][j]==1)( C2 x. F) f$ b
{
+ o" R+ o' i, E* Y1 o  rfor(s=0;s<h;s++)5 i. x% t& F; p: I% |4 K, h: m
{ " i. I: l' m/ i0 p
a[0][i][s]=a[0][i][s]+a[0][j][s];4 u# r- s5 R; J: J1 q: m' {. ?; M
if(a[0][i][s]==2)
9 F) H2 q6 ^9 ~$ R% @7 j' P( Sa[0][i][s]=1;9 k7 `/ V( t, L5 x2 v" @
} . x. L. |* B; z% ~& T
printf("\n第%d次运算的结果如下:\n",++r);! `, i& e( H- ^  H- s, r6 r, L0 y) F" o
for(p=0;p<h;p++)
2 n2 ~2 R' n- {& E{
2 {9 g0 `; h7 J  e" a5 @/ r) lfor(q=0;q<h;q++)# I1 ~" C  @! i* G
printf(" %d ",a[0][p][q]);- f* M! Q1 k3 b1 T8 l
printf("\n");; ?! n9 T! d! R$ T+ U
}
! v% {. E- P( y8 L: U}% t7 W2 Y. o5 Q
}
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-9-11 16:20 , Processed in 1.511636 second(s), 61 queries .

    回顶部