QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h") a6 V6 w5 A" `; y; W% _. U! n
#include "string.h"
: \  I" L9 L- w% C! e#define N 50 : i) c5 }& [) {6 K" }5 |
int jisuan(int a[N][N][N],int h,int z,int i,int j);
" Y5 @% l) M+ u" _: Yvoid micifang(int a[N][N][N],int h,int t);8 U2 k2 L* ~* a, q8 @
void buer(int a[N][N][N],int h);
+ i; v# |* Z2 v8 P# D5 xvoid warshall(int a[N][N][N],int h);: ]" Y* H6 E- E: K9 j% |
main()6 x8 c( S( l- Z+ T
{* E* ?: u/ B5 M" D2 J7 ~  @2 B* `) t
int i,h,j,t;
) M; X8 }( G2 ^4 Q; l& jint a[N][N][N];
) n: u! b* [  \# _) T. zprintf("请输入邻接矩阵A的行数(或列数):\n");; j2 ~" \7 ~, F. m- z
scanf("%d",&h);
- h; K7 G3 y8 ?$ `# _1 T. G! I' L; wprintf("\n请输入邻接矩阵A:\n\n");
# e# E9 H( }/ @5 \9 l, qfor(i=0;i<h;i++)( o5 d8 c6 R0 u8 I
{% u$ W+ r1 s$ l! t
printf("请输入邻接矩阵A的第%d行.\n",i+1);7 C' o$ z  a/ ^, d6 O
for(j=0;j<h;j++)5 A6 d# N$ P5 w& g
scanf("%d",&a[0][i][j]); 7 F' V# C* F4 Y6 T6 Q$ O1 a8 }! y/ ]
}; x4 Y/ A2 e6 T) |8 R" y6 w
printf("\n邻接矩阵A为:\n");
4 @0 W) d& ^! R% hfor(i=0;i<h;i++)
2 C# w! T: U3 j. y{
  d1 f' e/ v; s0 L: b% y, Mfor(j=0;j<h;j++)5 Q8 [, \6 {0 J& R2 k9 t  r
printf(" %d ",a[0][i][j]);+ s, a% b' G) z
printf("\n");- u* ~  ]- ^& M5 W) E
}, R. v0 M+ {/ B" Y  U) g3 L+ k' e
printf("\n\n\n算法一:\n");3 |( Z  j* ~  z. H
printf("\n矩阵A的1次方为:\n");9 Q  i) A# z- D* m
for(i=0;i<h;i++)) j+ b1 l9 a/ X# i8 ]
{; x- |2 ^. t7 n( X. k$ T
for(j=0;j<h;j++)- G' T$ c: D! Q+ ?" E$ C' F
printf(" %d ",a[0][i][j]);
# \' v# `# [: J. P6 {& W: C# Aprintf("\n");
4 y* q+ G3 k. k" N}
+ T/ R- N# S, f+ [% D. Smicifang(a,h,2);
, S0 a3 e# J8 E) P% \8 ^7 y3 I, J& x! ?for(i=0;i<h;i++)
! N* ?5 {. P/ m) F9 v9 j% a9 Z  cfor(j=0;j<h;j++)
, D' J/ I& Y: e6 o) c) ia[h][i][j]=0; //全部赋值为0!
  ]) E( D3 s; m7 K! Xfor(i=0;i<h;i++)
2 r0 t6 y/ t4 F8 ?& X3 qfor(j=0;j<h;j++)% r0 ?5 P" c& y6 \4 G! s
for(t=0;t<h;t++)
% H# _2 U4 X/ U! [9 za[h][i][j]=a[h][i][j]+a[t][i][j];& K8 p- |* |7 \8 G
printf("\n\nB的值如下:\n");
1 W0 j+ Y1 b" tfor(i=0;i<h;i++)2 |5 `7 ~9 R5 a' y7 [' m
{
9 n1 z1 E4 s2 Cfor(j=0;j<h;j++)0 g+ }; E4 w: g0 `9 X; X
printf(" %d ",a[h][i][j]);6 ^8 u2 ~! `. M
printf("\n");
6 e6 K  c& p0 q) f! x+ a}, U, h( c' {: G0 R+ X
printf("\n\n\n算法二:\n");
  Q6 l( f4 _6 \printf("\n矩阵A的1次布尔幂次方为:\n");
% W( H" r8 f5 q3 p  H6 Lfor(i=0;i<h;i++)! W3 `2 t" F( O( \5 x8 ~
{
8 Q  n" Z- A+ K. m- Ofor(j=0;j<h;j++)
& Y6 f1 O0 F8 N# B0 }" q% x- h" x{
$ y3 w! \2 X4 ^' ~0 Iif(a[0][i][j]>1)) I6 L6 i0 O: w. v3 J. W8 R9 z
a[0][i][j]=1;
( y) j+ l4 V& F, f1 H8 Aprintf(" %d ",a[0][i][j]);; ?, P, ]' O  d7 J& c7 B3 N
}6 u* M2 r. c0 p" G' Q9 e2 `9 {
printf("\n");7 f1 @6 h" O0 i& c& M! ]; A
}1 G9 x, z9 n$ c+ }3 ]7 ~
buer(a,h,2);& z: s. ?9 n" o! E! S
printf("\n\nP的值如下:\n");" f( N" s) }3 c; I
for(i=0;i<h;i++)
7 s- H) h1 }3 H( k{
) ?: b' L. G1 _* l' x$ rfor(j=0;j<h;j++)
$ t6 G, j' `1 h8 g* y8 r{ : K) n5 j7 k4 U/ y! k* b* n1 N
if(a[h][i][j]>1)
' t9 |! s2 ^- _2 O5 g: Sa[h][i][j]=1;3 r/ A" m  i3 ^1 g; e. L
printf(" %d ",a[h][i][j]);  n/ F: ~7 A) O9 D9 z6 x5 k
}
' B& s% R  O7 M. j8 Kprintf("\n");7 s6 l( H. s7 B8 Q( e: M
}* K0 Z, M1 W$ R8 l' j
printf("\n\n\nwarshall算法:\n\n");2 D9 r: v8 w* r* c
5 U4 t& S, J4 m9 b
for(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。1 n4 R& G' V! M. Q* f
for(j=0;j<h;j++)
, z$ U7 b2 r4 W; oif(a[0][i][j]!=0), i' {5 _4 X8 E0 j2 r& f
a[0][i][j]=1;
, f( K' C7 Q! F9 F# v% Y$ e* l1 bprintf("整理后的可达矩阵为:\n");& }  U& ~: b" C. v+ B
for(i=0;i<h;i++)+ r2 r+ Z( T+ [! n: v9 s) O9 W
{1 B) H8 @9 j( n7 G1 H6 W
for(j=0;j<h;j++)! r" F- @" c; o) N
printf(" %d ",a[0][i][j]);
+ e; L! r8 z2 i( Vprintf("\n");
( D, G5 E+ e8 b' @% x; e1 g( ]}1 X# v9 X! B" ?5 }& `' p7 |5 k) n
warshall(a,h);
/ `8 l( x9 \2 j5 O' j0 G1 vgetch();
" V$ N: `3 b; g}
2 O- ]/ Y( F0 x% E& S: U" @3 w* [int jisuan(int a[N][N][N],int h,int z,int i,int j)+ T( B& z2 T$ q* E6 q/ X; x+ U* }
{( u( L2 [" @9 \: a' a7 M, E
int s,jg=0;: v% ^+ p7 F9 A; [3 x
if(z==2)
6 [* [% M( l6 f3 Dfor(s=0;s<h;s++)# ]6 A6 ]3 y  h( w6 s8 E0 `$ x3 j
jg=jg+a[z-2][i][s]*a[z-2][s][j];, C, j, m2 x9 b. \
else
- A$ H9 ~( M/ j$ \for(s=0;s<h;s++)
6 H9 _- d" ^; {; a: I, Fjg=jg+a[z-2][i][s]*a[0][s][j];0 S/ w: H# b; {0 z. g) V7 `
return jg;
& j' c3 I2 y( c0 ?6 f  |8 V6 s& Q}1 g, j+ ~$ u1 M
void micifang(int a[N][N][N],int h,int t)8 J7 Q9 z" o0 w+ i9 \) ^
{
- ?. E8 g6 a2 i% t7 [) D% _3 p8 Qint i,j,s=0;1 d- C; i; R9 O* B
int z=t;
' m* b$ N/ b' s: Aif(z<h) //矩阵的值不全为零。
% p# ]) S2 r# ]- ~{ : i# v1 e1 W' t/ u: D+ t8 n, w, c
for(i=0;i<h;i++)4 M* g& G  R6 c( d0 o9 A4 L( M  ^4 H
for(j=0;j<h;j++)
3 s5 U9 \3 Z1 [3 q9 a( x' Oa[z-1][i][j]=0; //全部赋值为0!
5 `" |. W" H6 y7 n, y# y" p' S& M. mfor(i=0;i<h;i++). P2 q3 Y! E9 T/ f8 C
for(j=0;j<h;j++)( f& u- i( n( {$ N( @7 B1 E. N
a[z-1][i][j]=jisuan(a,h,z,i,j);
- L; [: l, d( oprintf("\n矩阵A的%d次方为:\n",z);7 h! ^) g) H" w
for(i=0;i<h;i++)
- {9 J  G* J( ?6 w/ n7 g9 g{! n0 f0 J3 ?  r
for(j=0;j<h;j++)- u9 c4 e' s" w0 Y  B% J
printf(" %d ",a[z-1][i][j]);% a& o8 M  {1 Q) F- D
printf("\n");8 V9 O! T3 @/ w8 {
}
) H; D- ]' O4 R; F" nmicifang(a,h,++z); - G; W0 D# t5 X
}8 b% i9 o9 k! Y$ i7 _# R
}! \. b0 G( E% T
void buer(int a[N][N][N],int h,int t)
6 `" P5 I: t4 w6 B' J{! E5 p3 S0 `; |
int i,j,s=0;
6 R: ^. q! m5 a1 `5 Z/ ^' \; xint z=t;; ^8 b# t( D# {. h
if(z<h) //矩阵的值不全为零。
- W; _; [- f4 l/ o, [: i( D+ [{
2 o% D" X+ Y0 `2 q/ s- u* ~for(i=0;i<h;i++)1 ~6 `. t' c5 e
for(j=0;j<h;j++)
9 q4 ], n% d# Sa[z-1][i][j]=0; //全部赋值为0!" P7 }- o7 o( S9 D7 _
for(i=0;i<h;i++)
4 w; |6 Q% \6 w- r% [2 Y: Z$ {for(j=0;j<h;j++)
2 P5 j! y5 k5 v. \; h) O1 la[z-1][i][j]=jisuan(a,h,z,i,j);
! e( K( O- C% U* r; B1 Z. Uprintf("\n矩阵A的%d次布尔幂次方为:\n",z);# ^2 s" P! j% p) M& l- y- q
for(i=0;i<h;i++)
) L( `  f3 a. V& _3 K7 c' R" a{: r' `& r- \8 H; A4 M# p: E' r
for(j=0;j<h;j++)% G/ G6 B" B+ m
{ 9 f& V: \, Q$ x2 R1 M' B
if(a[z-1][i][j]>1)
# }- h7 ~& d) e' }/ j# oa[z-1][i][j]=1; 1 `$ V) A( Z) p- h
printf(" %d ",a[z-1][i][j]);
4 t% ]' N. P& F9 E$ I& Y}
+ N$ i% m9 C0 m' eprintf("\n");& m# \% @$ g$ n
}
% L' i- _! E3 K) r- Bbuer(a,h,++z);
" ^& ^7 [  X! {, I+ g2 N; a}" K' J8 r1 N1 R' i; {) R
}: O# L; X0 k9 J' R: h
void warshall(int a[N][N][N],int h)
8 f$ k1 I3 q5 F3 g5 c- h8 g% ^{
# `( T& T! M5 \& {int i,j,p,q,r=0,s;* Y! c; i" D# k1 F. ?
for(j=0;j<h;j++)
! c4 u% L, I+ U# ?& [; t6 Zfor(i=0;i<h;i++)
' O& S( v6 v! t4 t$ `9 cif(i!=j && a[0][i][j]==1)
& K+ V. v# o2 l3 M! @( _% r/ n3 G, N{7 o$ B% N, O( ?
for(s=0;s<h;s++)3 [: C3 P. \- q  K1 H, n. Y( y
{ # v! d; l! f( C% U
a[0][i][s]=a[0][i][s]+a[0][j][s];# H7 A: _$ R& t" m* s* w4 n: V
if(a[0][i][s]==2)2 J+ b' D+ s* m1 F% ]0 }$ w. u2 g
a[0][i][s]=1;
1 t- _0 m# V. J( F}
6 ~# l. b: d1 Q8 ^printf("\n第%d次运算的结果如下:\n",++r);! V2 c) [$ X- q) D5 v
for(p=0;p<h;p++)
% W' [: M" b7 F# _8 ~{5 p0 E9 h& q$ W
for(q=0;q<h;q++)
$ E/ \! K, N* W6 _/ A* Nprintf(" %d ",a[0][p][q]);* S4 l* l8 m4 o7 F: y1 t% y0 W6 r
printf("\n");2 i* J  F& G5 M7 z, w( l
}, q) [4 v3 V0 E
}, U* e: g) W9 C; L: l7 i4 U
}
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-7-21 04:30 , Processed in 2.068606 second(s), 62 queries .

    回顶部