QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"
, @$ d# i& h3 M7 R. i5 `( t#include "string.h"7 y! q: ]* z+ o; s  V
#define N 50
& t& @; s' {8 M; E8 Q$ Cint jisuan(int a[N][N][N],int h,int z,int i,int j);% p9 u& i5 ?% [7 j
void micifang(int a[N][N][N],int h,int t);* F) Y& F1 N; T8 R2 j8 {
void buer(int a[N][N][N],int h);5 i/ N3 S9 E: C' t. Q9 ^2 R
void warshall(int a[N][N][N],int h);
1 H# [# U+ [8 E3 x, s3 _4 ]main()4 O& }0 {& y, B' `% o0 ~! O" N' l
{+ G. U) o& a. ^/ y+ q
int i,h,j,t;
& @! o8 k) t2 Z8 H" y; lint a[N][N][N];
6 G0 ]4 u% E+ s3 l! cprintf("请输入邻接矩阵A的行数(或列数):\n");
0 S& v+ e( ?8 k' _- nscanf("%d",&h);6 F* f( V# x6 x- I1 E, n
printf("\n请输入邻接矩阵A:\n\n");  a1 D3 ~6 i8 N
for(i=0;i<h;i++)) I, W, k8 E  |9 i" I  W6 `
{
5 \* a3 J9 k% m' i* F# r& w4 k3 l; ~printf("请输入邻接矩阵A的第%d行.\n",i+1);$ q$ Z- d. K" W: Z/ z9 w/ O6 ]
for(j=0;j<h;j++)
3 x" y, w; K4 T, K  Tscanf("%d",&a[0][i][j]); ! L8 i' T% a" Z6 S- L0 @
}
5 f$ m' ?9 b4 Fprintf("\n邻接矩阵A为:\n");
: u, r# \& z; {) Sfor(i=0;i<h;i++)2 ^! j7 ^% x- X! z- R! I
{
5 t  g2 h$ ^& s$ h3 Q( wfor(j=0;j<h;j++)+ f) }" f  G# s5 G" O( r
printf(" %d ",a[0][i][j]);
5 d! n: b$ d3 M$ B; x- F! i+ yprintf("\n");% ~3 @/ B( H" z- o2 H
}
6 R: B6 q/ q2 z+ [" \' m( D& H% _$ Vprintf("\n\n\n算法一:\n");
1 O1 C, [2 D# H8 c- M6 P1 yprintf("\n矩阵A的1次方为:\n");
" o- A; S& {* I" Zfor(i=0;i<h;i++)
# w. ^' z" P7 ~1 i{
) U7 k4 }) J' P% F' Z% m3 @9 hfor(j=0;j<h;j++)
9 ^6 K+ R* H1 v7 O+ tprintf(" %d ",a[0][i][j]);, }5 p) o; M. a( R! R' K; Z1 X
printf("\n");
6 }, z2 W4 P# B}
+ u3 A. K; y) m. a1 e! f$ Zmicifang(a,h,2);
( Y1 q0 ?" g( v4 L# \, a9 ^for(i=0;i<h;i++)
/ f4 L0 w. @2 Dfor(j=0;j<h;j++)! @: x1 `. k) N. s( x7 {6 z. \
a[h][i][j]=0; //全部赋值为0!
) z& W7 P# `, e/ s' {" \; n+ Kfor(i=0;i<h;i++)6 D/ e7 Z2 m- R' |
for(j=0;j<h;j++)
; {( o; b4 J+ X. i- N3 k( N; z- S5 rfor(t=0;t<h;t++)
& G) D2 m4 i7 j# @# P- E: oa[h][i][j]=a[h][i][j]+a[t][i][j];
; B2 T& `' a% {8 s$ Z4 Mprintf("\n\nB的值如下:\n");# @6 [) o6 Q5 m! z4 v+ O
for(i=0;i<h;i++)
% v' L4 m' n/ X( T- G! U3 P{/ Y1 o$ O8 C( {. x
for(j=0;j<h;j++)+ m: ?  @( C& a" V" k% D
printf(" %d ",a[h][i][j]);
0 B# {# g4 y+ A- {printf("\n");+ y3 q& O( t% F3 ^; _- j. O
}5 Y9 P$ X- K8 k7 l* }' T+ k
printf("\n\n\n算法二:\n");
. B: _& k0 ^0 ~" G+ V5 w, Nprintf("\n矩阵A的1次布尔幂次方为:\n");. W2 G4 `6 _- o1 c' F! o
for(i=0;i<h;i++)
; }, D0 K  A! H+ j! i{6 `  M: I6 c5 w9 O
for(j=0;j<h;j++)8 S1 `, F( i8 s$ s& z$ @
{
! g. k) m$ \8 a6 G5 O" Dif(a[0][i][j]>1)9 H  q9 f1 C) D, w# G5 N& ?
a[0][i][j]=1;
- Q; b. `0 s% u$ Hprintf(" %d ",a[0][i][j]);/ Q; d6 |& \. p$ C% T9 k  ~$ m. ?% \
}
! s' B& k- E$ ?+ |& Lprintf("\n");
3 G9 n9 D, ~& P}
5 p* i- ], T- ~; ^" b% Hbuer(a,h,2);
, x# d" Q) r) z# Gprintf("\n\nP的值如下:\n");; E' J; `" K  u) w
for(i=0;i<h;i++)
  h2 X3 o) e) K% a9 g) |! {{# t3 P/ z. F" r! M' b) S
for(j=0;j<h;j++)7 V$ j$ y( Q  q5 M& h
{ ' f% U( r9 o" J, h1 b1 u: y$ n( M8 Y! H
if(a[h][i][j]>1), \( I! b, g( w4 @8 g+ @/ ~
a[h][i][j]=1;( D3 F: A9 i' r
printf(" %d ",a[h][i][j]);8 e! ~0 f! A5 [9 x
}
* W. d# j1 r/ w& L& Bprintf("\n");4 w5 \; Z& S8 z, V1 t( y$ P) n
}
- A3 [; ^7 G6 }$ `* e5 xprintf("\n\n\nwarshall算法:\n\n");
/ l, g* F4 \; l
2 L5 d9 D, K, ~% g$ Ofor(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。2 f6 s$ z/ t8 u* x9 l2 h7 x5 z- r
for(j=0;j<h;j++)
8 j2 v, X# Z& I! W" Vif(a[0][i][j]!=0)" H1 W4 J) w7 N5 ]  l( P
a[0][i][j]=1;: ]8 k* f: ^5 k- _" N, f% f
printf("整理后的可达矩阵为:\n");
% k* N& z5 K+ Afor(i=0;i<h;i++)3 G: o7 S% S) C1 L
{8 E3 T# G+ i6 k& ?2 L8 u/ c
for(j=0;j<h;j++)' L$ r' j& E$ R; X1 j
printf(" %d ",a[0][i][j]);- s! L: ?: C* z8 [$ b
printf("\n");. [; j3 O$ m( b6 V8 E
}
3 U# d6 p4 C0 Mwarshall(a,h);0 n6 u2 m( {! y7 L% ]
getch();# o1 x5 J/ m7 \
}
/ h  K( P2 r* _# X/ q# u2 zint jisuan(int a[N][N][N],int h,int z,int i,int j)
$ z) L+ h2 K- i* o& R! R. I( \{
1 E, l6 M  k3 S; wint s,jg=0;
+ O$ U+ r# j# h2 E2 Eif(z==2)
3 c, i* C" F7 P0 qfor(s=0;s<h;s++)7 }2 C/ E- A* N, `1 N, X: z
jg=jg+a[z-2][i][s]*a[z-2][s][j];$ K0 k( w7 B: w8 P6 G* O- l7 S* w' V
else + n9 R; k  Q9 j$ W% M9 u' z& s
for(s=0;s<h;s++)
/ c, a: o0 @; `* c$ m+ W" M' `jg=jg+a[z-2][i][s]*a[0][s][j];! g9 q9 }1 j) b9 [: n
return jg; 9 b" c! |- N+ V- \6 P* f3 N: ]
}& z1 v. \5 `% m
void micifang(int a[N][N][N],int h,int t)
% T3 c' K0 N' f8 J0 z; W& ?  ]{; E3 k9 ?* ~7 L3 g/ r
int i,j,s=0;
# ^7 P( A2 o6 Q/ Sint z=t;) Y* {! x2 K) x9 o9 z0 \  T
if(z<h) //矩阵的值不全为零。! _5 d  i* J8 p, C
{
9 V+ B" r. ?5 l0 Vfor(i=0;i<h;i++)" Q/ M' y; O5 ~% t. \1 H7 g6 @  b
for(j=0;j<h;j++)# J- u/ ~3 [" `* D  X$ B
a[z-1][i][j]=0; //全部赋值为0!2 A" G# L$ K# S4 b# e% e8 h( C
for(i=0;i<h;i++)
7 q! t6 P4 g7 r% H2 nfor(j=0;j<h;j++): V# t% r1 T+ B/ e/ t4 F
a[z-1][i][j]=jisuan(a,h,z,i,j);- V0 L- [7 K/ _2 j9 r2 ?- H
printf("\n矩阵A的%d次方为:\n",z);
# z4 Y8 W4 e/ ?' [4 rfor(i=0;i<h;i++)$ _6 ^; Q6 T0 ^2 X3 R
{
8 O" z% z  }- I! c( h3 rfor(j=0;j<h;j++)
: U1 Z) Z% k( h% S2 R6 E+ Xprintf(" %d ",a[z-1][i][j]);  s9 M: C& Z3 U- e! d
printf("\n");
* h8 i5 c3 Y) N( M}3 `; m9 P9 O  g! O  k, v3 h
micifang(a,h,++z); 4 {$ E2 Z& C8 k/ G  u
}  d. \, r; P1 a$ Y2 r3 |- Z2 l1 a$ ]
}
: w3 _0 f. |! L- z6 jvoid buer(int a[N][N][N],int h,int t)
" {" _* E, C- \: N( h{
1 L7 s) {4 A9 Q& M% Wint i,j,s=0;: U! B9 z8 k! F* C/ b
int z=t;
9 H( s6 R: ]# d, |if(z<h) //矩阵的值不全为零。
/ k! |: y# P" p' c9 |{
! P# ]. k9 u' Z& Z4 Wfor(i=0;i<h;i++)
5 w! W* ^* i: x; J! Afor(j=0;j<h;j++)) X! @  d4 d; s' z. x
a[z-1][i][j]=0; //全部赋值为0!
- n# Y2 j2 B3 C3 l+ t  {for(i=0;i<h;i++)
+ W1 m# _& E* O( a2 ?. Vfor(j=0;j<h;j++)
4 ]$ p9 u9 h/ P5 Q7 f  ~a[z-1][i][j]=jisuan(a,h,z,i,j);
. m. G* l: q& s( V& F# \# |! d. ]0 Yprintf("\n矩阵A的%d次布尔幂次方为:\n",z);
3 g0 T/ U  p+ ~$ W+ Ofor(i=0;i<h;i++)+ z- u; H! M7 ^
{( G8 v* X0 Z! A* N1 @; b6 {
for(j=0;j<h;j++)% r' Y4 k3 i6 e; C, l8 [
{
0 j$ j$ }  `  Q; T) Lif(a[z-1][i][j]>1)8 A& \) K: m8 c% Q2 k+ y
a[z-1][i][j]=1;
+ \  [6 J7 Y8 |/ k2 L; eprintf(" %d ",a[z-1][i][j]);
; F: d6 {9 Q$ j& R}
5 O6 m3 s/ u  `$ O: N  U" xprintf("\n");
5 z2 K; ^( G7 l$ d8 K2 d/ V}
" k% \2 P  A/ \6 q' U  Sbuer(a,h,++z); ' H" d8 G! l4 k! R7 x$ z* j( N4 o
}9 ?' ?8 n, k9 A7 @
}. n: p* Z- x8 A8 U' ^
void warshall(int a[N][N][N],int h)) v$ B2 o# x5 n4 u
{0 z* _) a9 P) t# S. S% k
int i,j,p,q,r=0,s;
- B: \  p2 P9 V; Xfor(j=0;j<h;j++)
6 P  T" {8 q; t% g& ~4 Z' Wfor(i=0;i<h;i++)
( }' K1 ~; d9 u/ f+ M4 Zif(i!=j && a[0][i][j]==1)
/ Q% T8 ]6 A2 r+ {& v{
# Z4 Q6 z. N4 N9 yfor(s=0;s<h;s++)! [9 I, P6 R5 m0 E3 }0 B4 |9 s
{ ! k; U2 l" e2 g1 D6 ~
a[0][i][s]=a[0][i][s]+a[0][j][s];
2 L( c& W/ p6 A4 L  p& Z& jif(a[0][i][s]==2)
2 I$ Z4 u- q, @3 ia[0][i][s]=1;
" n, [% {$ O. {: n2 K5 {: g& j4 K} ; n+ [0 V* ~. E7 N* |, m
printf("\n第%d次运算的结果如下:\n",++r);. l( D0 ?& F/ N
for(p=0;p<h;p++)1 J9 \( e- n' V& w) h# Q- Z
{1 m0 P& R" f: @8 ]+ N3 h& K
for(q=0;q<h;q++)
' k) b8 D( E! w" D# p& F/ K3 Uprintf(" %d ",a[0][p][q]);0 t8 t. d  k8 v$ Q4 Y! ~# g
printf("\n");
# Q0 s& @( r, G( g3 g# A}
. H* f7 M9 g4 k: T  Q( H& V* O}
9 G' M) n1 x# C+ i: V}
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 06:46 , Processed in 0.332553 second(s), 61 queries .

    回顶部