QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"$ s# ^  v1 @3 I+ k
#include "string.h"3 Z4 l. n) m! g1 f  P7 J; Y
#define N 50
: s6 p; M& q6 @8 @% @int jisuan(int a[N][N][N],int h,int z,int i,int j);+ p2 ^6 g) ]& ]8 F0 Y8 q
void micifang(int a[N][N][N],int h,int t);0 ^) m+ I# t: P$ U4 L9 P. L
void buer(int a[N][N][N],int h);% P1 K( o# ^. u
void warshall(int a[N][N][N],int h);
: o8 p8 @, \5 I7 g! s/ dmain()
1 S" y7 J( R4 L' s: A$ |5 r0 n) Y( V7 E{1 j/ c$ k/ M, Y
int i,h,j,t;
! Q' w+ X5 p7 I2 c3 b% u1 `! ^int a[N][N][N];2 {2 f6 C8 B. Z4 w2 O3 A! m
printf("请输入邻接矩阵A的行数(或列数):\n");6 V8 o0 i; H4 S
scanf("%d",&h);
& B, R, V6 Z5 O. ]printf("\n请输入邻接矩阵A:\n\n");
/ O! b* C# h9 j* g# Z7 h9 W9 Yfor(i=0;i<h;i++)
& x1 b9 l( e7 R' h7 P) T0 {{# p& Q% N. \2 p  @$ T
printf("请输入邻接矩阵A的第%d行.\n",i+1);
4 M3 \4 t- b5 p4 S0 z. H( ~for(j=0;j<h;j++)
4 M2 o0 K  e* l6 Wscanf("%d",&a[0][i][j]); 0 M7 }8 g" [4 m& {1 u
}# b4 I, g6 m9 p2 ]4 y
printf("\n邻接矩阵A为:\n");
- j4 ~/ O, o5 l$ ifor(i=0;i<h;i++)
* c4 [# Y( Q# Y- g2 P6 p2 o{
: I" a5 a2 U% o2 ]for(j=0;j<h;j++)3 {: A, A1 L0 [8 }! t
printf(" %d ",a[0][i][j]);# H8 N5 W5 @& n, |  [, U5 g8 n
printf("\n");, u" R! s1 d! d+ i, p8 T7 `
}& N3 K  ?" q3 U, F6 e
printf("\n\n\n算法一:\n");8 j, g- j6 s; f, G& E+ T9 Z
printf("\n矩阵A的1次方为:\n");
" F. }# @2 P, N! gfor(i=0;i<h;i++)+ D6 y! w2 O+ g  |
{7 ~0 \3 c- r- j. X; x, ~) R: d' P
for(j=0;j<h;j++)
  a) H* i+ H( V7 M! W) Nprintf(" %d ",a[0][i][j]);
+ b. F) ]' H2 n1 {printf("\n");
' i% ?, b1 d/ B2 b& F: k}
  W! x! T  \" h  g* vmicifang(a,h,2);
+ C; ]' H" L& x3 j' mfor(i=0;i<h;i++)
/ m0 [7 l8 `+ B6 y1 e7 `- N2 {8 jfor(j=0;j<h;j++)
8 i: _) ~! q- v/ \a[h][i][j]=0; //全部赋值为0!
" Z' |' ^8 U! D9 A7 vfor(i=0;i<h;i++)9 h& Y! C* c0 A( j" [; S
for(j=0;j<h;j++)
$ E) j1 }  Z3 h3 nfor(t=0;t<h;t++)9 g& E2 t& z4 p% X5 O
a[h][i][j]=a[h][i][j]+a[t][i][j];$ u2 J# h- h; o0 x9 O
printf("\n\nB的值如下:\n");4 g0 a$ `2 e8 T
for(i=0;i<h;i++)
* d/ L( A$ G  N9 I& G* e{$ X9 v9 T5 ?2 k& V% X: f
for(j=0;j<h;j++)
) Z3 T7 E8 _3 a! Y1 mprintf(" %d ",a[h][i][j]);
# s+ @: |$ A' p3 Xprintf("\n");
5 f9 u2 n2 L9 l+ o6 n- @  q}
! k2 Q) ^2 o3 N7 Q, iprintf("\n\n\n算法二:\n");' o- l- E9 U# j: h  x. c$ g
printf("\n矩阵A的1次布尔幂次方为:\n");
7 S2 `6 U7 Z4 f* }for(i=0;i<h;i++)8 E" R1 j4 `, u# M" P& ]$ m9 a8 ^
{: O8 F8 I- ]' p1 ?% {
for(j=0;j<h;j++)
; G9 `# a6 v' e9 \{  B- j: u% a' }, @% O  G
if(a[0][i][j]>1)- J* e; p9 x4 o4 N0 u7 D+ f
a[0][i][j]=1;. l! a6 F$ G/ G8 Y
printf(" %d ",a[0][i][j]);
, \( S5 Z4 A7 I7 i! o# s}0 B2 I9 \6 H$ n! f
printf("\n");
  Y& C7 W# O( j& b: g8 m: U}$ C2 f! v0 L+ o! _
buer(a,h,2);
( ]* K0 ^+ P8 Y" x3 q4 jprintf("\n\nP的值如下:\n");
7 e9 M! p* q) a; J8 Yfor(i=0;i<h;i++)
$ g! q' `, Z4 X& O{0 K, z7 q& _: r  `+ G: E8 l
for(j=0;j<h;j++)
8 c/ H( J( g! N6 ~% X; B( k5 i{ " F2 U3 w2 [( k5 L
if(a[h][i][j]>1)6 {( ^0 i1 g  q
a[h][i][j]=1;3 ^. d! J( l$ n, G) x9 C, U& x( O
printf(" %d ",a[h][i][j]);
! T8 \6 {6 ]) D$ k0 _  Q/ k}$ m0 k" y4 Q4 \+ Q
printf("\n");' R7 m6 V$ H) p( L& E
}
+ Y8 b2 B( x! g6 V# J1 r; D1 @printf("\n\n\nwarshall算法:\n\n");7 g& G5 a: N7 ]
0 K2 F# c& L- t5 U2 T
for(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。
% t0 y  }% I  D* ]: }for(j=0;j<h;j++)
2 U/ ^7 N* m2 X* H/ d" \if(a[0][i][j]!=0)
. {% e+ B: v5 T2 na[0][i][j]=1;/ Y3 m- E8 i* _, M1 Y9 \5 O) f$ ]
printf("整理后的可达矩阵为:\n");
( d/ G1 b% b) o# zfor(i=0;i<h;i++)
% h# P: f* M6 O- N& O, r9 u{) f7 F7 f+ [) X9 c" T; k$ U
for(j=0;j<h;j++)0 n8 @0 Z; }: F" S. S
printf(" %d ",a[0][i][j]);
4 m5 N! q! J9 i% F# J* pprintf("\n");- W; i8 n' g+ q
}3 T- ~  z3 W7 {! O- e& }3 K
warshall(a,h);
+ P  U% L% a" J7 ^# N7 y+ Zgetch();4 m; c# _5 s9 X- q/ q7 k9 s9 T' y: N
}' D8 ~3 W$ Y% q+ B" O) o2 I
int jisuan(int a[N][N][N],int h,int z,int i,int j)
3 O' F1 |- w% i7 r0 h& H4 l{" D* o9 r; y' c% [# |
int s,jg=0;4 L: [2 d' l" t: `4 Z- Q. R: J
if(z==2)( ~& A- A9 z  ~/ X6 ?5 [6 V
for(s=0;s<h;s++)
% P% D3 F6 m3 F& Y0 Hjg=jg+a[z-2][i][s]*a[z-2][s][j];
4 F3 c' D* }( S/ {, A" x: kelse ) {6 e9 x+ d  v: i. F
for(s=0;s<h;s++). N) ~9 F  {8 |9 i3 W5 z2 x/ ~
jg=jg+a[z-2][i][s]*a[0][s][j];3 U# l2 U6 s  }7 p# G/ `5 ^
return jg;
% _6 I4 ^# }( P  X% ^# @. `/ e. N}
5 I0 ?# Y- y- P6 R! X# m( |4 W3 E& Vvoid micifang(int a[N][N][N],int h,int t)8 M, {, g6 z( _6 O4 U: k1 [' F3 a
{
0 j  R7 h+ L% v! j, Lint i,j,s=0;1 p6 t' B1 G0 |* D# Y
int z=t;  R) y' {( N8 @" x6 R  x9 V; h* q( L
if(z<h) //矩阵的值不全为零。$ C4 r) w7 g7 ^- l: s$ ?+ Z5 C) [
{
2 ^& M& G+ q$ nfor(i=0;i<h;i++). W# i" Y; v& [# }* \
for(j=0;j<h;j++)- g" e9 u4 I- N! s
a[z-1][i][j]=0; //全部赋值为0!. N4 G1 s* d5 Q& W9 t" z
for(i=0;i<h;i++)
. y' _# e* b! n$ k% J4 nfor(j=0;j<h;j++)9 C; H: [4 }) p" \
a[z-1][i][j]=jisuan(a,h,z,i,j);
% \1 F% b3 W8 `$ @printf("\n矩阵A的%d次方为:\n",z);
- ?/ ?2 P* s' P- Q0 u  mfor(i=0;i<h;i++)
/ r1 w5 g# U3 O{) @, w( l* R' t! N6 C: u6 Z
for(j=0;j<h;j++)
" ^6 y* e- V: x. n3 i. iprintf(" %d ",a[z-1][i][j]);
, k7 z  A* q3 _2 |: jprintf("\n");! x3 `! \& P- H
}
* q0 s1 a- X2 h: U# [; d1 A' Hmicifang(a,h,++z);
% S- Q2 G6 W% O6 T( O, u4 G}' c$ X; k* Q1 b
}' W6 T: A4 s9 F! A7 n7 I
void buer(int a[N][N][N],int h,int t)% D1 I2 I' h  \5 X
{4 u" G; J, a0 y& [. \) ]
int i,j,s=0;
$ d, \4 F4 i) w8 ~, V( Aint z=t;
' [( S: B  U# J" r- x# ~if(z<h) //矩阵的值不全为零。5 C) d3 z* ^' U& i1 {* T" i
{
: k% M( d, ]2 H( D# sfor(i=0;i<h;i++); m0 r4 `9 I  ]6 D$ e- t+ d* l
for(j=0;j<h;j++)
! }) B1 V8 L+ {$ V8 @! Wa[z-1][i][j]=0; //全部赋值为0!
0 P% o- i7 x4 k; Q% W& ufor(i=0;i<h;i++)9 k7 p. q4 n2 [  R7 k2 D' z5 G3 _4 A
for(j=0;j<h;j++)2 z( f) a  h+ Z6 B. y
a[z-1][i][j]=jisuan(a,h,z,i,j);
% r1 {  e8 ?( J/ L" O* j6 }/ Hprintf("\n矩阵A的%d次布尔幂次方为:\n",z);
/ q* |' s) R) G% z4 M1 Gfor(i=0;i<h;i++)2 m8 W. ]4 _! b( {2 @4 p
{& [% ~0 Y2 Y* q( F8 D  n" R
for(j=0;j<h;j++)+ M- V. t1 z: N3 d
{
7 C" H3 M, }/ d/ z2 [6 ~2 }if(a[z-1][i][j]>1). \7 C" N& {9 _2 L7 I8 i
a[z-1][i][j]=1;
: @- Z7 C; q& U: C  y! |3 F9 bprintf(" %d ",a[z-1][i][j]);! E& u; M% |9 \8 Z1 Z) O
}
6 g, u& y. @4 v; f, q) k4 B; j2 zprintf("\n");% W( r+ q3 M9 B, _2 {
}
9 b0 V# v8 U- ?. Tbuer(a,h,++z); ( q! [/ N! {  l: D% a
}; J9 K; ], H& _7 H: R. m
}5 _* t  h! Q; l  K2 v
void warshall(int a[N][N][N],int h)
1 G3 {$ S( ?: X  b$ {" C7 ^" z% f{
% N7 j) E6 R, V6 O) @( A& W- Oint i,j,p,q,r=0,s;8 i8 s. V3 \0 w) W
for(j=0;j<h;j++)
& G" d! z6 i/ _# ^/ _for(i=0;i<h;i++)- Y. `2 w6 F1 j1 @9 v. w' k; Q, V
if(i!=j && a[0][i][j]==1)
7 [+ E6 X7 U1 k% N{! X' U5 `' r4 n
for(s=0;s<h;s++)
* q1 ?" k/ U" j' y, k{
+ i1 M$ U9 n; {% `5 W& Qa[0][i][s]=a[0][i][s]+a[0][j][s];# v6 |" d- s( E0 v
if(a[0][i][s]==2)
1 ~; y* c3 e: }, g1 V, L7 [" ?a[0][i][s]=1;9 D, @: w' q: Y- |% T
} ( y- |' m6 [" I; M( s: G( o/ e& u
printf("\n第%d次运算的结果如下:\n",++r);% O2 a/ v! g8 `1 j
for(p=0;p<h;p++)
- i. ^. M: M' U/ _4 P: k: A& S{9 d6 m: t' T$ T
for(q=0;q<h;q++)
! x8 E3 o' n6 X( ~/ m; r" Jprintf(" %d ",a[0][p][q]);
0 I! q% ^' r0 jprintf("\n");
" g. |, `# M$ w7 G}
3 e" a, P# M/ m0 w3 y}
- m7 `  Y& ?3 W5 z  K) B}
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 13:15 , Processed in 0.935941 second(s), 62 queries .

    回顶部