QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h") [! H0 ~0 C. _
#include "string.h"
# Z! k9 E) ^, \! s#define N 50
8 \1 K0 [, i6 wint jisuan(int a[N][N][N],int h,int z,int i,int j);
( n, f2 C- W- J: R( gvoid micifang(int a[N][N][N],int h,int t);1 J1 U8 P; V( H6 r( C
void buer(int a[N][N][N],int h);6 x* O1 Z$ S) c8 \# S% B9 A
void warshall(int a[N][N][N],int h);
0 d9 Q" I( `. ~$ @; r% Z% fmain()
: B3 ?$ m% y' R; O+ Q{
% d' M8 M3 K( i) x  }( `# L* ?+ e/ xint i,h,j,t;8 p7 [" S4 W& ]
int a[N][N][N];" r5 L& G5 D0 b3 D% E/ Z, j
printf("请输入邻接矩阵A的行数(或列数):\n");
- j$ P  V* L. H) k8 w# `) R  Iscanf("%d",&h);; M- n9 B! E8 Z! j+ q
printf("\n请输入邻接矩阵A:\n\n");
" t3 p" O) n1 \$ _1 Vfor(i=0;i<h;i++)+ }# h" U. |" ?, }) k
{
2 Y( }, _) Q" y- e* X4 Aprintf("请输入邻接矩阵A的第%d行.\n",i+1);$ e: _5 K+ _; T' {
for(j=0;j<h;j++): f2 C5 Z( k7 I8 x" w; Q! r
scanf("%d",&a[0][i][j]);
% v6 Q. `1 R: f2 B( T( x}
8 F! G- u4 g& {( [& Sprintf("\n邻接矩阵A为:\n");  m0 a& `( J! L- U8 ^, J8 a1 g
for(i=0;i<h;i++)  j& Z) q6 G4 b' a8 i
{% C7 X  z" @2 W+ t) x2 \1 h" S7 L7 @
for(j=0;j<h;j++)! l8 Q! \5 |8 x- C' E$ l! _, F) J
printf(" %d ",a[0][i][j]);- K5 c& A' p  }, g
printf("\n");
+ y1 e: ~* d; W4 e  _7 i$ D}
$ V! @5 J+ v! K2 X6 l* c9 sprintf("\n\n\n算法一:\n");2 o# L2 a6 T9 z& X$ L. \
printf("\n矩阵A的1次方为:\n");
: s  b, k! P) F4 ]$ Hfor(i=0;i<h;i++)
3 m4 ]0 k+ ?7 j- J- }! [{' c0 M% }' ~/ i# ?& b: d
for(j=0;j<h;j++)
, o5 p( l. [% a8 U6 Q" Fprintf(" %d ",a[0][i][j]);! y% K, S$ I" P# E" U
printf("\n");8 z! l5 M4 o. }8 K# a. n- Z
}: a; Y3 C! Z! Y/ F
micifang(a,h,2);6 Q2 n3 T& U* }& {/ T8 g
for(i=0;i<h;i++): M$ u1 E4 t! ~' q! \
for(j=0;j<h;j++)
7 {7 v$ W8 a6 i4 Q, C# X* [% b$ \! oa[h][i][j]=0; //全部赋值为0!* c# U0 @: {) k- Q$ g
for(i=0;i<h;i++)- R1 s, a" O4 I
for(j=0;j<h;j++)
3 |5 M* e$ t; \8 h4 y+ ffor(t=0;t<h;t++)
" ?% U4 O% u1 Ca[h][i][j]=a[h][i][j]+a[t][i][j];
7 [' @; d9 |* i# aprintf("\n\nB的值如下:\n");/ S  f+ [$ T; A- E" ?) D8 @  }
for(i=0;i<h;i++)
& Z# q! W+ J, i# ~/ S3 U8 N{
, q! d, Y1 Z+ Cfor(j=0;j<h;j++)
* u; W. J- T8 w: _printf(" %d ",a[h][i][j]);
5 {+ z. b$ y: R5 o" y- Pprintf("\n");8 |+ V2 v/ L/ D* i
}- {7 _1 a) E: x5 u4 k. z. |' G
printf("\n\n\n算法二:\n");5 ]- X, }* N- }: w9 d6 N7 C5 q
printf("\n矩阵A的1次布尔幂次方为:\n");
: t4 X! i. ~- X+ u: Q' hfor(i=0;i<h;i++)
- f- G' w( z' r{3 `- w/ o+ L; P8 q. d
for(j=0;j<h;j++)
/ M2 Y- F1 X3 ~% h0 B- e2 {; _{2 l1 O7 w+ O/ ]6 Q$ P) L( v* l9 D" T" g
if(a[0][i][j]>1)( R6 @/ D3 G" M: S! _
a[0][i][j]=1;
9 _9 K. }1 _% b4 b' p+ g; W# D) Bprintf(" %d ",a[0][i][j]);
- n/ b  u9 a5 ?; _& t& A}3 Q6 A% L! \" e! ~& d
printf("\n");4 ?* T9 O, l5 G# D0 V% I, A
}
1 g2 d" [+ f, y( w: t8 o: Tbuer(a,h,2);" H8 E# ], G) L& q) ]6 x7 d8 E7 w. M
printf("\n\nP的值如下:\n");
  Z1 ?% _9 P: _) d' l  Wfor(i=0;i<h;i++): _1 T  w; B  j& n" k) E
{8 G' G, f, J/ H
for(j=0;j<h;j++)4 a( A! Z$ G) K$ `1 Y* [
{
  R4 \8 E: K! A2 Dif(a[h][i][j]>1)# B/ G6 B. o% d4 Q
a[h][i][j]=1;
1 ^) C( V& v* _& lprintf(" %d ",a[h][i][j]);
: M; n9 ?- l1 O}
; w% z" |: m2 N6 `printf("\n");
0 g6 F9 S7 W: h}
% _+ T3 D( w2 P% W) xprintf("\n\n\nwarshall算法:\n\n");
, I4 l5 B7 b- u: \9 Q9 S4 E8 O8 N' y+ y, ]3 r7 H- @
for(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。1 d" n% Y9 p8 S7 m- c) m
for(j=0;j<h;j++)
( L7 J3 R; U& h5 K  L' q, Cif(a[0][i][j]!=0)
! J. @+ L: |; B2 La[0][i][j]=1;
9 h* r/ U( g, B! V3 w% `# W+ iprintf("整理后的可达矩阵为:\n");/ f. K! a( C) X" h, B
for(i=0;i<h;i++)- ~) \$ \8 q% m* Q9 y* I" s9 D
{
& |! r- g1 h5 Y, R2 n  v5 Vfor(j=0;j<h;j++); K! t7 o: V' c  c$ K
printf(" %d ",a[0][i][j]);
7 ]% E+ R1 ]7 X: V- Y( ]- {printf("\n");
1 m3 o' k; ]" M+ J% _, y- w8 I}
* O& e- Q; F# O! S% v/ h/ i, owarshall(a,h);
3 }5 V0 B! y3 i, M1 b* qgetch();
: ~  a% Q2 ?1 @& w, r}
, }3 K1 A2 P/ q* E+ m" k1 B, K/ z, |int jisuan(int a[N][N][N],int h,int z,int i,int j)& e9 w; f' F: _' o, n. z/ \( A8 k
{4 [6 @# A, c; x' `$ E* w1 Z
int s,jg=0;* I& r. Y- J5 ]7 e4 T: W
if(z==2)
/ T; b' }7 {5 ?3 O+ [+ hfor(s=0;s<h;s++)# Q% }* X3 N7 p3 W& a
jg=jg+a[z-2][i][s]*a[z-2][s][j];
% k! N& ^7 i1 J2 felse , |  k- i0 R# s9 u: b7 w6 [
for(s=0;s<h;s++)2 E8 g! P9 a# D: G# y& E5 U& i+ u& e
jg=jg+a[z-2][i][s]*a[0][s][j];
2 V3 \! E# t  h# ?return jg; ( J3 u+ }, Z; L" b3 N/ @
}9 Q) q, u3 e! ?( @$ Y6 O
void micifang(int a[N][N][N],int h,int t)- ~$ F# u  e- C$ b8 V, Y, d* _
{
/ \# |, ^  E  }0 ~int i,j,s=0;: I$ Z# O0 k- \) I7 a
int z=t;
) L) W4 Y. Y( e4 j' h3 cif(z<h) //矩阵的值不全为零。
# S5 S; B' C* X. J) V9 T: N7 f: L8 [{ % C2 R! h. k3 o6 k0 l
for(i=0;i<h;i++), s% d2 b& U# n& i' c
for(j=0;j<h;j++)
; J% f; `( {; \' f, @; g- w& Y- d9 Sa[z-1][i][j]=0; //全部赋值为0!
% W7 D" C5 _$ }4 j6 ^7 h5 jfor(i=0;i<h;i++)1 P' X- c' \& N# V5 c! d
for(j=0;j<h;j++)
, }& b3 R: r2 J" w4 a1 `a[z-1][i][j]=jisuan(a,h,z,i,j);
) l' n7 C8 Q/ Uprintf("\n矩阵A的%d次方为:\n",z);
# j7 V. S/ R, m+ O) V5 Ifor(i=0;i<h;i++)
9 z& ^3 H. i2 N+ f) M{
( m: u9 y3 n1 ?, ?1 H* Kfor(j=0;j<h;j++)7 U5 [# W9 e( X2 j
printf(" %d ",a[z-1][i][j]);9 X" `3 M, z8 t, O5 i6 x; ]/ s
printf("\n");
* H6 H  w1 p) |* n* ^4 N" q2 Y}- r- u3 W( M9 w6 a5 f, Z
micifang(a,h,++z); " T' _! J9 B( x+ Y1 U4 x
}
4 ^( I6 I% B/ v* Y}
8 y/ ~. X, D6 e* _& K+ I" |  u6 ~) {void buer(int a[N][N][N],int h,int t)
5 g) x% N  p: R. ?' X6 b. Q{
! {$ U: k6 J# f: |int i,j,s=0;1 j6 p# n& R1 ?
int z=t;' o4 ^/ u) ^. S) D- J- b; Y
if(z<h) //矩阵的值不全为零。
+ M! V8 b% Y1 N{
2 J5 G- g1 M$ @. Z* Jfor(i=0;i<h;i++)+ R$ Y( M, O/ E3 t8 C
for(j=0;j<h;j++), o# [) c# k/ ?6 ?$ N# ?+ V+ k
a[z-1][i][j]=0; //全部赋值为0!
; o8 V9 |) ]+ l8 \7 [$ pfor(i=0;i<h;i++)! ]. _0 f2 ?' z$ Q5 N" S5 i. \
for(j=0;j<h;j++)
8 U* d8 _' a5 N  Ka[z-1][i][j]=jisuan(a,h,z,i,j);
4 J+ |5 h/ u$ N( cprintf("\n矩阵A的%d次布尔幂次方为:\n",z);8 x& N% r5 P  z8 v8 ^0 ?2 a
for(i=0;i<h;i++)2 D, v* Q5 X9 o6 _$ d
{
, h+ @, S7 K$ j+ T2 h( i7 I) pfor(j=0;j<h;j++)' \& g# e* s" w4 S9 \3 u$ C! F
{ , m  B( Z2 o6 B+ k
if(a[z-1][i][j]>1)0 `8 B: `% Y8 E4 X" n, i6 O
a[z-1][i][j]=1;
  U/ t* s1 k8 s/ i: n1 }1 rprintf(" %d ",a[z-1][i][j]);
7 M% T1 X( }1 r* A  c5 R}0 \2 b; a/ `+ p3 J* h- T7 x/ @
printf("\n");: Y' m5 q' M$ I$ I: J6 @% U
}, i. m# _+ Q3 ]
buer(a,h,++z);
' G" C# J- l* m& m' h' [6 \}
! E0 ]6 p8 I3 ~+ L: T}8 n8 o9 q8 f# q7 `
void warshall(int a[N][N][N],int h)
3 l% q( Y2 F( C7 l' a0 w{
% k/ y% P8 `( i8 @+ v5 H/ l3 o3 vint i,j,p,q,r=0,s;
1 {& x5 ]3 y9 jfor(j=0;j<h;j++)0 o" n3 L3 E2 T* \1 e( l
for(i=0;i<h;i++)
; K% I/ A$ P+ ]) D) O2 @if(i!=j && a[0][i][j]==1)
7 a  T) ~9 p# V2 X6 k{
/ c- d9 o1 F/ p2 `$ |/ nfor(s=0;s<h;s++)5 b9 K4 ~) M: P) Z
{
6 N7 _, t3 h' H# ya[0][i][s]=a[0][i][s]+a[0][j][s];
  R9 Z' N! r) R. qif(a[0][i][s]==2)5 A! r9 |+ x) R. U7 }$ R( ?2 b9 U. P- E
a[0][i][s]=1;1 z3 V0 C) h2 t7 R# J) o
} & D% {, O1 k+ {5 W: `
printf("\n第%d次运算的结果如下:\n",++r);
! N# n6 _: S  N4 i# m1 L1 ]# C+ Afor(p=0;p<h;p++): h7 {9 G% w" y! @
{( X) A1 n5 m9 N  |) `3 H/ K* m
for(q=0;q<h;q++)8 {0 n3 k5 N$ r+ O4 @1 z' m
printf(" %d ",a[0][p][q]);
& D1 Q, T% w& B3 D* A: Sprintf("\n");
/ K/ f7 ]- T- i: \: R}8 h5 H* t" d0 y* Z% V' p2 y. {
}
  k5 c: H; S! x. I9 c8 D6 I}
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-6-3 17:30 , Processed in 0.523719 second(s), 62 queries .

    回顶部