QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"
! g2 }( \9 h, i+ F! }" ?' q1 Z% H$ U#include "string.h"4 q: Y, M1 z7 M$ L; K, H
#define N 50
) {" ?( G' q8 Zint jisuan(int a[N][N][N],int h,int z,int i,int j);8 G( g& u5 y; w
void micifang(int a[N][N][N],int h,int t);
- ~, I  Q6 `" Cvoid buer(int a[N][N][N],int h);
% h5 `4 n4 q* F: Q$ F6 H+ rvoid warshall(int a[N][N][N],int h);
: a; C& J  P4 smain(). v  m& \' R1 ~
{
/ [( I, R! K1 a4 C) }int i,h,j,t;& W2 i( E. D2 i! d; G, o
int a[N][N][N];
+ [; s) I8 O# tprintf("请输入邻接矩阵A的行数(或列数):\n");6 o3 z- f& t/ U0 r# a2 K
scanf("%d",&h);
/ E* L9 _8 _5 G' s1 D& Iprintf("\n请输入邻接矩阵A:\n\n");) M, h) ]/ \1 u2 f! d- P) T1 z
for(i=0;i<h;i++)1 v4 o- N" D+ `! S9 l1 d7 v% C
{. H2 ]+ E& E& L8 {
printf("请输入邻接矩阵A的第%d行.\n",i+1);
" M6 V4 _1 ?" pfor(j=0;j<h;j++). J# T3 U: v8 j* y# n
scanf("%d",&a[0][i][j]); " R2 I. N2 N# Q2 N) L
}
. M& a+ B% j! c% M9 t! k& Hprintf("\n邻接矩阵A为:\n");
# A2 n; j+ [% \% cfor(i=0;i<h;i++)4 ~5 q# s  o6 u* _0 M) ]  a% F6 L
{* }/ `; E5 h2 @( Q1 R+ o
for(j=0;j<h;j++)  Y% \7 G7 Z& s
printf(" %d ",a[0][i][j]);
4 h# c* \2 f8 E" L; {5 W9 g  ~printf("\n");
0 F9 ?( S9 u% H$ T) j}
+ ?4 m8 C! E( Y" g( a! l: eprintf("\n\n\n算法一:\n");
* m% c6 G) p) T. i6 [' pprintf("\n矩阵A的1次方为:\n");
5 W4 W& X$ ?% ?# ofor(i=0;i<h;i++)
+ H' C, v+ v, }% O5 Q{( r' A0 B" @1 m) i2 V& L( ^8 E* ?, D
for(j=0;j<h;j++)
8 Q) x% i4 Q' ]# E. r- eprintf(" %d ",a[0][i][j]);
. {/ A1 F) P+ s* a, c. `printf("\n");
8 s7 o- y3 d# Y- l! N/ `4 I}& d" V6 N' |& y' j0 t8 n- u
micifang(a,h,2);# h7 n* b7 d! D  \3 }9 ^" k
for(i=0;i<h;i++)3 ^1 b" B) `" B# C) P8 O
for(j=0;j<h;j++)
; U9 J4 O+ U  q* ca[h][i][j]=0; //全部赋值为0!) M# `, i3 E, `. D9 Q* m
for(i=0;i<h;i++)
: y/ H- j/ z6 k* x9 Wfor(j=0;j<h;j++). n/ Q5 R" g4 L! V# O
for(t=0;t<h;t++)# @3 e3 {; X( M" G/ c# \
a[h][i][j]=a[h][i][j]+a[t][i][j];. v. Q- h; N5 b& I. t, ~
printf("\n\nB的值如下:\n");& t; l0 M# D. H9 N8 U
for(i=0;i<h;i++)
& Q& T/ @( V% @; S9 F! A$ z{0 l' I& x2 |6 Q3 x. a6 x
for(j=0;j<h;j++)
3 U- k. R9 |" ^printf(" %d ",a[h][i][j]);: I6 C0 {0 g; g. r1 r' }& Y
printf("\n");
8 d* K- \" Q1 f}
% ~) C. `3 b  z% V% xprintf("\n\n\n算法二:\n");
8 Z; n! F" g5 a2 E! \2 ^# F1 wprintf("\n矩阵A的1次布尔幂次方为:\n");
3 ^9 }% q  R. q0 Jfor(i=0;i<h;i++)
. ~- o6 k/ m: U3 `0 G{
! E  h+ L5 I, S* Ofor(j=0;j<h;j++)
8 L6 \- v. c4 {/ _$ u{$ z. P0 ~4 q( [% p& c' H$ b
if(a[0][i][j]>1)
9 {' s& C8 t6 t5 z; X1 v2 u7 q6 sa[0][i][j]=1;
; f7 v( K0 Q1 S9 b% {7 lprintf(" %d ",a[0][i][j]);. e( b; s5 A  w1 p8 L% z
}
! I4 P- D; P$ Q, Sprintf("\n");# X! ?1 G& _- C! f( o- x5 h
}
( @/ }! j: ^5 k+ N! W+ Gbuer(a,h,2);
4 \6 ]% l& B  |3 aprintf("\n\nP的值如下:\n");
& r" B( t. Z1 J4 ~7 w+ D& pfor(i=0;i<h;i++)4 x) F2 ?' j( j% d
{/ O1 a/ P, W: M) P4 H) X
for(j=0;j<h;j++)% C/ y/ r# f, ~$ ~) p
{
2 C9 ]4 b, m$ f! h# }- y# eif(a[h][i][j]>1)
( |* T. o) H7 E5 e: qa[h][i][j]=1;
/ W. ^) v6 X: Q+ `3 g9 Gprintf(" %d ",a[h][i][j]);3 h2 [$ W& E! r$ @# Y2 b
}
: I3 s, |7 p7 V/ c& i( Pprintf("\n");! T. S! g) d/ d# w3 \2 h2 K
}) I6 s4 o) k/ {: v, f
printf("\n\n\nwarshall算法:\n\n");4 P+ S% Y! W, `9 m( y
  b  P7 [6 f5 J, Z5 M+ m
for(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。0 G7 y# A. P1 u; x/ A5 Z$ G" j
for(j=0;j<h;j++)
" m( j! ^% b! E8 s" h  V( `/ Lif(a[0][i][j]!=0)3 h( F  d! |2 Y  Q
a[0][i][j]=1;
( Q! ^& I% [- A" b6 W! }; y$ uprintf("整理后的可达矩阵为:\n");
( h$ ]: `, j% `7 K# ffor(i=0;i<h;i++)' `( `. Q! I. Z& c; ?, a
{
2 e) a  m5 ]! t( V0 v: G& Tfor(j=0;j<h;j++)
- D) X. T7 [- yprintf(" %d ",a[0][i][j]);2 L6 Q8 C, _! h3 p4 n) j
printf("\n");& }3 U- [$ C+ U) P
}4 b; W- N  q# q& N9 S; t
warshall(a,h);8 Q! `5 U* r" `
getch();
- P+ r3 f. [4 y: l}8 x6 r# o5 w2 q- W6 _* W) j* e
int jisuan(int a[N][N][N],int h,int z,int i,int j)' P* F8 o2 X" O
{% d$ L% o" B3 b4 c
int s,jg=0;
/ `9 X  I2 Q) Jif(z==2)8 u8 }) F0 T; b
for(s=0;s<h;s++)% B, H* P  Y1 C1 Z# l0 U
jg=jg+a[z-2][i][s]*a[z-2][s][j];
( I, r6 ^4 V4 ?! \8 ^2 h1 N. Jelse ' v( N4 n4 T( {; W" c. y
for(s=0;s<h;s++)
/ W9 u6 s5 Y9 q1 zjg=jg+a[z-2][i][s]*a[0][s][j];
3 o+ ]3 g$ A  C4 t' e+ T7 xreturn jg;
5 o' o) f5 ?' j3 A0 Y}
; z) Y$ r3 q2 d9 R9 Gvoid micifang(int a[N][N][N],int h,int t)
( F. j0 W5 y( J4 R' z- w{4 z8 l$ y/ v  l% `
int i,j,s=0;  n1 H: Y: Y) n. B7 k
int z=t;
& Q9 v! [5 o3 q: ]9 X0 O. p* H4 w$ bif(z<h) //矩阵的值不全为零。$ z' d% |, S6 s" V- \. @0 t
{ 8 z/ T- ^  P6 z) x- O1 _) p
for(i=0;i<h;i++)
# J5 i! X, c; ofor(j=0;j<h;j++)
/ F# e  N/ B# }' z& ka[z-1][i][j]=0; //全部赋值为0!: f' o/ k; L2 t3 O
for(i=0;i<h;i++)" V; z( N' {# o9 C7 P
for(j=0;j<h;j++)/ ~- I4 |6 {& t! o4 u
a[z-1][i][j]=jisuan(a,h,z,i,j);
. B; P7 h1 j/ l) F1 b' T( _/ j: @printf("\n矩阵A的%d次方为:\n",z);
+ p2 i+ Q* k0 d6 F9 e6 b0 y( z; Sfor(i=0;i<h;i++)! c# @6 E6 |8 C2 C
{; N, j* l2 L' K7 A# ~; d
for(j=0;j<h;j++)
3 q* A0 Z: T7 Q$ Z  e9 l9 ]9 \! kprintf(" %d ",a[z-1][i][j]);  I# w0 Z! S& D' G) b
printf("\n");
& w+ k7 z4 o& u2 F}
3 W! K+ O) r# t/ Lmicifang(a,h,++z);
4 e) z$ A5 g& `) r: M, n}& Y6 m: t- I: ~' v/ l
}
7 |9 P8 L2 i. ?void buer(int a[N][N][N],int h,int t)
  k8 _) N9 h; t{/ c" t' L4 q5 _9 i( J/ _9 M$ ?$ W
int i,j,s=0;
+ t: E/ ]) }- @* Kint z=t;
# V: [4 p9 r. `9 mif(z<h) //矩阵的值不全为零。
0 a! R6 W% {5 h{
8 _! s6 W2 J; Ifor(i=0;i<h;i++)  p4 X9 O! H( R$ q3 ?2 \
for(j=0;j<h;j++)
: j' e/ N2 g' d3 Z) xa[z-1][i][j]=0; //全部赋值为0!) ^% J' J; U6 @* C  k1 ?4 b& y7 v
for(i=0;i<h;i++)
% |4 J: O7 j, _1 z. ffor(j=0;j<h;j++)
! D9 U- F, B& }9 }  Y6 E$ Ka[z-1][i][j]=jisuan(a,h,z,i,j);
. @, j+ P- t- Xprintf("\n矩阵A的%d次布尔幂次方为:\n",z);- j, z, i9 |& F! T5 a4 ]: i
for(i=0;i<h;i++)' A6 U7 ]$ }! }8 \6 o( _# t9 h
{
& e$ T3 i! \6 [! H# b" {- O0 l8 lfor(j=0;j<h;j++)
8 `! `/ ]3 v6 g) A3 L3 C{
; i) u5 X6 [! nif(a[z-1][i][j]>1)/ ]: s% {7 f$ z: `/ V) A
a[z-1][i][j]=1; . y9 v4 }4 u. G9 i
printf(" %d ",a[z-1][i][j]);
" b0 `" Y+ p; `: v}$ o# t) e& \+ R7 U' m, t3 A2 z; \
printf("\n");
' O( L  h2 M' c# T! |% r3 r}+ `9 T+ N( U8 m* v' [7 b$ O
buer(a,h,++z);
% P6 }3 F: B3 N: T( T}9 U- O( Q; y# i
}- Q" Z' |& d, u) @
void warshall(int a[N][N][N],int h)
8 c4 b3 l6 h' S+ F7 }" {{# V+ x3 J& U- h: t* E0 K7 f
int i,j,p,q,r=0,s;
: [9 [( ^. d8 |, ^! nfor(j=0;j<h;j++): Z8 H" o( {/ n
for(i=0;i<h;i++): b9 z1 Q: L  |2 w
if(i!=j && a[0][i][j]==1); m8 c* Y' H3 v
{
' s+ r# Z  ]& v& c0 Mfor(s=0;s<h;s++)
4 J( b+ ?7 b% `{ ! y% H% _9 E$ ]8 ?9 t$ Y
a[0][i][s]=a[0][i][s]+a[0][j][s];
* c; f6 o. n  C' Z1 D8 sif(a[0][i][s]==2). n7 p8 E! L2 Z$ t; U0 N
a[0][i][s]=1;1 F2 t8 q3 u+ l0 R3 n* i* M
}
. m' p# b. c9 ~3 Uprintf("\n第%d次运算的结果如下:\n",++r);
, ]8 s' k9 t2 y1 _+ ]0 Cfor(p=0;p<h;p++)
0 |+ F. k% S3 V. Q{
7 D) H+ }+ U" ^2 U2 B- zfor(q=0;q<h;q++)
/ d- ]$ v* f/ b, \& R9 ]# ^printf(" %d ",a[0][p][q]);9 N, O- d! [: O# O+ Q
printf("\n");) u& K4 E1 @- P  s& b& C
}
5 e0 m  f+ t2 i0 q}: y. ^, b) [  O' Q8 I! m
}
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-9-24 14:08 , Processed in 1.238251 second(s), 56 queries .

    回顶部