QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"5 ^6 w' P. e8 y
#include "string.h"7 o! i6 N5 W5 V- x3 T3 ]! R
#define N 50
# I) R+ n1 ]0 R* l% m1 i  Vint jisuan(int a[N][N][N],int h,int z,int i,int j);( B! Y, h" t0 [, N
void micifang(int a[N][N][N],int h,int t);
+ D) u! S& p' [void buer(int a[N][N][N],int h);  f" b5 U. `) i1 y
void warshall(int a[N][N][N],int h);
  a! c$ W$ D' W$ L- Umain(); T2 B+ v. h$ w9 z& b
{
2 i6 e' C8 w! X  ?% Z- Q) @  Bint i,h,j,t;# v, C3 u4 \3 S: Z
int a[N][N][N];. P8 A. L  ~/ M& N" X# N
printf("请输入邻接矩阵A的行数(或列数):\n");
- Q' n3 b, p) p0 l/ Z+ H$ Yscanf("%d",&h);3 x. u& C9 G# L  H( I' s/ {; b) @+ e+ A
printf("\n请输入邻接矩阵A:\n\n");
; B  v8 ~6 V$ n: @) Ufor(i=0;i<h;i++)) [2 t5 O. W  b* T" d
{' u; p6 ^7 ~) p- F2 p+ f7 _  C
printf("请输入邻接矩阵A的第%d行.\n",i+1);- l8 }( S8 G- @+ V, ~  L
for(j=0;j<h;j++)
6 B: }9 O1 K$ s$ Zscanf("%d",&a[0][i][j]); / C6 }' }& h. J  U/ K, L4 Y1 ~. L
}" q0 ^% u  z  Y5 S7 s3 a# c; _& X; u
printf("\n邻接矩阵A为:\n");1 h8 K0 P2 G1 W& _
for(i=0;i<h;i++)
0 _8 S& t+ j" Z$ ^7 t2 M/ A{) [6 K  x) p/ f& n5 L/ s
for(j=0;j<h;j++)1 j: y3 z. u- `
printf(" %d ",a[0][i][j]);5 L! d  b# @" R# u' ]' a
printf("\n");$ z- X$ h# K+ U* T4 m- j
}
) M- C1 t! q7 w$ c8 m/ @printf("\n\n\n算法一:\n");$ O, d7 K  }. x9 X( ^3 S7 f0 T
printf("\n矩阵A的1次方为:\n");
! Z* l+ b. S+ x+ Hfor(i=0;i<h;i++)' \! O2 n( r3 r$ G. B$ F6 Z& ]3 n
{
' [" e7 X2 h8 E- e, W4 rfor(j=0;j<h;j++), G2 [; s+ T4 Y8 [4 c3 @6 B
printf(" %d ",a[0][i][j]);/ j2 t: I; C& [. @3 t2 a
printf("\n");
) @0 _0 i5 [: m  o}' V$ p  y$ _* t8 w  q. G
micifang(a,h,2);
6 t. Z; P* i" J3 p. `for(i=0;i<h;i++)
# P5 R! R+ _$ r9 L/ U9 Jfor(j=0;j<h;j++)
. s* E0 b( @+ }a[h][i][j]=0; //全部赋值为0!
1 Z" b7 Y. W) _1 ]1 f9 s: [. nfor(i=0;i<h;i++)% i# ]4 f: L! ?" q9 f+ Q) X
for(j=0;j<h;j++)
4 C( m  D1 O) s0 b. Efor(t=0;t<h;t++): r1 w9 q1 c5 A
a[h][i][j]=a[h][i][j]+a[t][i][j];
7 {' x& G9 s7 I( e' t, Cprintf("\n\nB的值如下:\n");
* ]4 N$ k5 p/ }/ z; i6 U7 `8 Pfor(i=0;i<h;i++); }  X/ b( {" m8 h( ^
{
7 R0 Q# J9 U: ^; S- z6 c, Afor(j=0;j<h;j++)5 m  t& D. W: c0 i
printf(" %d ",a[h][i][j]);
& [9 @9 K$ i" m: @* P" B# Hprintf("\n");, X2 }+ ]9 \4 m2 M. L. _% M
}
+ J/ \- _7 H- \& |8 i$ H' o* yprintf("\n\n\n算法二:\n");; k, e) s0 H1 e. s9 v
printf("\n矩阵A的1次布尔幂次方为:\n");% P1 o2 }2 w/ d0 d: c) m: r- I
for(i=0;i<h;i++)+ D( M- D; _' T  Y
{
0 r; C! w7 c: }7 b% Rfor(j=0;j<h;j++)
6 @+ w* G& p, K4 g{
$ Q4 c0 Y; J1 U+ G4 jif(a[0][i][j]>1)
/ m3 R5 P% [: I$ w( pa[0][i][j]=1;
2 l+ q6 {- S  qprintf(" %d ",a[0][i][j]);
4 z" J8 o1 @1 i* n0 C) F}
; {3 V1 j* J& ^0 _. x6 u; Aprintf("\n");+ Y% o. E: L* X( U0 s
}
" H! `. \. v' V9 u1 @buer(a,h,2);- j! X0 D6 \2 `" X  J
printf("\n\nP的值如下:\n");
; l3 T; h9 y3 u* I+ C! N# r3 C& h. q3 gfor(i=0;i<h;i++)4 t6 j# O7 m( I9 C
{
4 {1 J% K2 t# t0 u7 D& Ffor(j=0;j<h;j++)
; }! w: t, z+ C, |' k+ H+ h8 C{ 7 q- k0 @  O8 }" ~% }6 E, x' D. G
if(a[h][i][j]>1)
' V, m# N  y/ w3 |a[h][i][j]=1;- A& h% r! j7 \+ `* L
printf(" %d ",a[h][i][j]);; l, ^) |" \1 V$ j
}. n3 ]9 S6 m" E& Z0 g4 h  w
printf("\n");$ }, V. b# c7 Q" V9 \9 X
}
& v  g6 E' S! e8 l1 ~printf("\n\n\nwarshall算法:\n\n");
7 x) p- H6 a) w% m) ^  v+ _1 q' Z7 Q/ m* Y1 G6 W4 N  L
for(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。$ X9 P5 s' b( `
for(j=0;j<h;j++)2 E* S$ Y0 y( Q
if(a[0][i][j]!=0)+ y- z" K4 `' m+ U! _" u/ P
a[0][i][j]=1;
) V; F, z, U& o4 }/ y7 Q4 Xprintf("整理后的可达矩阵为:\n");
* T9 W, l& p/ y; M$ M. T0 D5 a6 xfor(i=0;i<h;i++)
) R5 g& c5 [$ X{
, n6 a  @6 [7 r" K% i/ _1 `for(j=0;j<h;j++)
# a8 v9 E& Z! u4 U9 o  c7 M% Nprintf(" %d ",a[0][i][j]);
2 T4 N. R0 A! M. M1 G$ gprintf("\n");! q6 e$ G; w+ W# q
}, o, N; l+ H, v; D
warshall(a,h);4 d( V+ A# }" D5 ?" o$ F
getch();
; L$ `: M& d7 K: H7 Q" X. F}5 X$ W' @) @" m4 D0 ^$ Y
int jisuan(int a[N][N][N],int h,int z,int i,int j)
- m/ i# F9 e3 e. A. [! i{
9 ?; |( D' Y4 b$ K$ A% vint s,jg=0;/ ~. ^' X& L& F, W" o. H
if(z==2)7 R- A/ b2 C2 x# h. d
for(s=0;s<h;s++)
7 ~; z# J! a2 ujg=jg+a[z-2][i][s]*a[z-2][s][j];! k' M8 I/ x( k0 ?  ]% k
else
/ Y! [, C. k; P9 x5 e1 G' Xfor(s=0;s<h;s++)
. `, P/ l+ a& G9 ijg=jg+a[z-2][i][s]*a[0][s][j];8 `7 i2 j$ K# |* ~5 Y
return jg;
% Z( C- T1 d3 V6 h4 G& U}
. n8 f: Q& H; i8 L) A& D5 Evoid micifang(int a[N][N][N],int h,int t)
% B' \0 w. L! a) u8 d6 Y{
* g  Z' Y6 z  n8 o/ uint i,j,s=0;! \+ c+ T. h2 r+ ]; b
int z=t;: f1 _' I' z8 l
if(z<h) //矩阵的值不全为零。
% K# m$ ^3 b" K% v{ 0 j# m8 o1 v- Y9 U% {! R* F/ r
for(i=0;i<h;i++)/ u8 J% k; p( ]0 B
for(j=0;j<h;j++), M3 k0 E1 l  x- U( \6 w* K% ^% w
a[z-1][i][j]=0; //全部赋值为0!/ z7 T; L  a4 d7 y/ x5 O4 B
for(i=0;i<h;i++)( L, C3 T" L0 Y6 k/ p7 c
for(j=0;j<h;j++)- s% D+ {, `8 e" \! l! a
a[z-1][i][j]=jisuan(a,h,z,i,j);( ^+ h* @# I' y+ b
printf("\n矩阵A的%d次方为:\n",z);
6 c8 p; V: Y* tfor(i=0;i<h;i++)
; {- z# `% c/ y: G{
; L( s: R2 s* `+ rfor(j=0;j<h;j++)
7 p6 p9 t% @* Dprintf(" %d ",a[z-1][i][j]);
% F0 s1 O5 F- i0 sprintf("\n");
( H0 F6 t, G# n}
! e6 l6 ]# w0 Z; u6 M( _5 z! Q# wmicifang(a,h,++z); ) H+ l( i8 Z( l0 l$ f. s% E( Q
}, @5 K" [' }- R% G- P
}5 A5 z( I2 o2 e$ i- B
void buer(int a[N][N][N],int h,int t)
2 Y  Y& i: J5 A6 q, o{
3 z' V' ?: {' r5 `# Mint i,j,s=0;
' ~6 i$ ?8 F; x" N9 Vint z=t;- R* ~# `, n( ^: B
if(z<h) //矩阵的值不全为零。( h. O9 E- h, k, H
{
3 O. l  M* S$ [8 z# }# ?9 a( rfor(i=0;i<h;i++)
+ L# ]2 Y9 O! S7 I# J* V; y2 Lfor(j=0;j<h;j++)4 a: u. l# u$ s6 p9 q% }
a[z-1][i][j]=0; //全部赋值为0!
/ Q/ ]& ~2 g) f# ^/ [; x% O% Jfor(i=0;i<h;i++)
* i. I7 B4 b+ o1 L8 E! L% ufor(j=0;j<h;j++)
4 y; f* ?+ k/ n  ua[z-1][i][j]=jisuan(a,h,z,i,j);: C7 s* B4 _& i  S6 k
printf("\n矩阵A的%d次布尔幂次方为:\n",z);
8 p7 w0 t+ d" t: ?. _8 ~for(i=0;i<h;i++)' d4 z3 g( l3 @
{7 `2 b1 I) c/ a% x( {
for(j=0;j<h;j++)6 [3 h* ~5 ]5 \( U( x0 L8 {
{
+ a' n6 f9 w+ q% rif(a[z-1][i][j]>1)
- z# R$ F! X& N: U1 e, ]" Va[z-1][i][j]=1;
/ C7 X, e( E, }% Mprintf(" %d ",a[z-1][i][j]);9 f6 `+ r6 k# W  f+ l
}* \% g- I' ]& k) c
printf("\n");2 |6 q, l1 q' |
}) R, v9 S: M3 X9 [  w+ U' r6 T
buer(a,h,++z);
3 x9 C7 m" M0 f! I3 {6 _}2 @1 O3 G0 m6 Y6 l& d
}, L1 P2 k" s- H
void warshall(int a[N][N][N],int h)
' j5 W1 J8 a8 H* A8 F{: ^/ v1 H% l. p& C: E) e: v) u
int i,j,p,q,r=0,s;
9 ?" G7 |8 B  U8 A7 P9 e! J+ L/ mfor(j=0;j<h;j++)
% S0 j, y7 x1 q9 n$ bfor(i=0;i<h;i++)% r5 V7 s! ]$ l9 H1 Q
if(i!=j && a[0][i][j]==1)
. d! M  Y  }) {# F) A3 X. D# u1 k+ Z{
1 h5 C. y+ E8 }5 R# i, e& xfor(s=0;s<h;s++)& r3 x3 `/ K8 a" `5 F, A7 _! R
{ 9 P, U: ?* \# H/ Q* \
a[0][i][s]=a[0][i][s]+a[0][j][s];0 n% @- m, l5 A& c
if(a[0][i][s]==2)
! N3 G- A/ W! g( c2 Ma[0][i][s]=1;
8 r2 `4 T. i: N}
- |% o( f! d" M6 _printf("\n第%d次运算的结果如下:\n",++r);& v: u( D2 L8 B1 I, G7 R0 [
for(p=0;p<h;p++)9 {: E4 c( N" G- Z
{
2 G" N! y& G. X4 T! T3 I- D' Gfor(q=0;q<h;q++)0 ^! i( k" z- _1 i& P, p+ I
printf(" %d ",a[0][p][q]);
( ]: [/ b1 Z% u. p  q- Xprintf("\n");
" L# R, V1 N( C}$ |* }, c! A8 K# z3 i$ k
}
( V8 o; Z8 q: v0 \8 f  D}
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-9-2 15:27 , Processed in 1.954074 second(s), 62 queries .

    回顶部