QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |正序浏览
|招呼Ta 关注Ta
#include "stdio.h"
5 C; _3 L. @3 F" f#include "string.h"
  ^* z1 [& `3 A3 b8 h* `#define N 50 8 e+ b. I  o3 {0 Q. Q" p% Q0 Q1 [
int jisuan(int a[N][N][N],int h,int z,int i,int j);9 L9 _. {' A" C; T
void micifang(int a[N][N][N],int h,int t);4 a( v, \; Y4 I% j
void buer(int a[N][N][N],int h);1 `4 m7 Q' E# P0 |$ C
void warshall(int a[N][N][N],int h);* T1 t- C9 J, E- @
main()
$ U" f7 O. K2 h{! n9 m, v0 w" G- F8 J
int i,h,j,t;7 _' ]9 Q: ~: H. d% m% t
int a[N][N][N];
; \& D( F: L$ C4 ?printf("请输入邻接矩阵A的行数(或列数):\n");
! B5 w4 o  N& s& c4 Fscanf("%d",&h);3 d1 k. n, I! N  h
printf("\n请输入邻接矩阵A:\n\n");9 R6 x7 I# @4 v% m
for(i=0;i<h;i++)
' A+ _6 O# {* Q5 z  `4 }7 c{  n% j: V* R6 |% b7 e& Q- z3 S$ U
printf("请输入邻接矩阵A的第%d行.\n",i+1);
8 [, Z9 i4 g; V. f- Ffor(j=0;j<h;j++)
4 s, r( y  J1 J& _  t4 nscanf("%d",&a[0][i][j]);
% ~" s% e5 f. b# _% E}
, N2 v, n; F/ _- B4 bprintf("\n邻接矩阵A为:\n");
8 A% r/ M, }4 K" O4 T8 Nfor(i=0;i<h;i++)
) A3 T% f' n4 E3 Q2 H{7 L* r# s' L  y, k
for(j=0;j<h;j++)' n8 c) J- k7 O1 z0 c
printf(" %d ",a[0][i][j]);
3 e  z) W2 Q6 e) uprintf("\n");; u1 G% l( g) d+ O# x
}- ]4 `& ]6 j# G# p+ d
printf("\n\n\n算法一:\n");3 [5 Y6 I6 p; |+ J* B
printf("\n矩阵A的1次方为:\n");9 H0 g7 L3 o/ ?' k
for(i=0;i<h;i++). K' l0 K0 ~! a6 [
{
  v% X: a6 I, {. mfor(j=0;j<h;j++)
/ t9 e$ ~" w1 f& a! Yprintf(" %d ",a[0][i][j]);, P, q, D" _; f$ N
printf("\n");
* f1 [  J4 L. z4 k) _( N* Q}3 p9 W; j# e% Z+ J: I- O$ Y; ^
micifang(a,h,2);8 O: D# D# c- M5 P- y
for(i=0;i<h;i++)
! r2 S, {) H+ [, efor(j=0;j<h;j++)
8 Y* C$ m- z5 v0 Oa[h][i][j]=0; //全部赋值为0!) F% n2 S( f* O' R" G
for(i=0;i<h;i++)
- k1 a( M" L& S, Cfor(j=0;j<h;j++). |; p6 M1 Q& s8 F
for(t=0;t<h;t++)( b0 D! }- {" k# J, _3 J/ r
a[h][i][j]=a[h][i][j]+a[t][i][j];
& ?7 \2 y6 l) ?printf("\n\nB的值如下:\n");6 i8 r5 ~' ^) ^# H
for(i=0;i<h;i++)& r6 l# r& Y% ^
{
7 {8 @2 p6 R  Qfor(j=0;j<h;j++)' A; ~! x6 t5 C
printf(" %d ",a[h][i][j]);
7 m% F! I; v6 w4 C. q* s# i5 @4 E/ P' {printf("\n");+ Y' l2 h6 U; f
}
# p6 k" r5 d: p0 i/ |printf("\n\n\n算法二:\n");
2 v  T8 k: [4 c9 K/ Zprintf("\n矩阵A的1次布尔幂次方为:\n");
0 S9 y, B; n/ H; Y% z- yfor(i=0;i<h;i++)6 k- h# d# P. f/ G2 i
{) R7 @+ N9 P  C- ^3 O3 o& v+ E4 z+ O
for(j=0;j<h;j++)7 x- X3 k& [* |) A" F
{
8 m- t& M  }; C# w7 ]4 {if(a[0][i][j]>1), |: w' D" h) [; @
a[0][i][j]=1;
5 s' ]9 c4 e% ^2 Mprintf(" %d ",a[0][i][j]);
- B% L4 i* p8 C}. h6 w* ?) w$ R
printf("\n");( K1 u- k1 l9 h! P# z
}3 x. q6 D) P4 L8 ~, o
buer(a,h,2);2 o+ m' L. {& I% o; k' {- n# |
printf("\n\nP的值如下:\n");4 f; S+ ?- P' p4 k
for(i=0;i<h;i++)
) U  d2 z+ q, u6 i$ \* x4 M{6 [$ }2 l; D& x: g
for(j=0;j<h;j++)  O( e1 S- N8 p9 K' m
{ ! [4 R! |2 R- L, {: C  e
if(a[h][i][j]>1)+ D- y/ y6 c  K: L) J$ U' j
a[h][i][j]=1;
( q" w: H8 H  U# L0 e1 iprintf(" %d ",a[h][i][j]);- _' L5 ?% z) B) b0 R) d  E
}
1 v. J$ R# r" [* R, Y  cprintf("\n");' C% L9 E' H/ z0 |; E4 m  }* S
}
: |! j+ x& ~2 X3 M5 hprintf("\n\n\nwarshall算法:\n\n");
  a2 n; h# [6 b
0 U% D7 s' }) P4 @$ N2 K4 [# o6 ofor(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。
4 d( Q% f( J, K' tfor(j=0;j<h;j++)6 |  U5 g" D4 e" _0 Q5 W; l: F
if(a[0][i][j]!=0)
: u7 h7 l+ @/ Ua[0][i][j]=1;
. \4 G8 t/ J5 F( {printf("整理后的可达矩阵为:\n");
" G- W7 Q8 w; o! _$ ^: s5 y2 T6 K5 o% Mfor(i=0;i<h;i++)
. i) Y: f6 [9 m8 V5 R{6 ^) s$ g$ K( Z6 B$ Y/ G6 P
for(j=0;j<h;j++)5 p* n8 Z2 n9 X' h- b: x
printf(" %d ",a[0][i][j]);
# h1 d, U( B' Y7 m. Uprintf("\n");! Q* H, L% }. {6 C2 \- Z3 U
}
+ \4 g1 z9 e. ?warshall(a,h);
1 g8 g& w# {( c! y2 Mgetch();
  e2 Q# D% |) B2 H" U}) h& o/ p2 q# Z2 u- A
int jisuan(int a[N][N][N],int h,int z,int i,int j)/ B: n" R" l8 I% ^2 ^
{
# a) j2 c. U; F, g) Eint s,jg=0;
4 C. A$ }% f& p$ J7 a. W, t  ^if(z==2)
7 |) x2 t; K/ J0 L) Dfor(s=0;s<h;s++)
$ H9 n0 q* y0 n- |. Yjg=jg+a[z-2][i][s]*a[z-2][s][j];
% }" U$ R/ C6 C7 `else . v: E; X, W/ n$ a8 k
for(s=0;s<h;s++)
+ }  }) r. G! B6 P& @4 Bjg=jg+a[z-2][i][s]*a[0][s][j];
0 J( J/ }8 A' T' I$ K' ]return jg;
" l  }* W/ {; P}0 p" F* h' Z2 _4 }% \, s
void micifang(int a[N][N][N],int h,int t)
4 l2 |) U* S! p3 f- S{
6 }1 f. r; q/ e5 d* b# v) d: Jint i,j,s=0;
9 _) s' j' ]9 [% F% \int z=t;
5 V( E% v8 R0 V" e% B) g! wif(z<h) //矩阵的值不全为零。
! i3 i7 n7 F; W{ $ z% A; P) f; N- Y5 v# c7 t+ X
for(i=0;i<h;i++). L. j  {' Q; z! W8 `
for(j=0;j<h;j++)
( [3 o" m. [) y8 a# u8 v3 I) w2 ua[z-1][i][j]=0; //全部赋值为0!
) f& |; v. v& Q6 X+ ?for(i=0;i<h;i++)" n! z7 y5 O+ F. E. E
for(j=0;j<h;j++)
& {5 ?' V! |2 w: F' Ra[z-1][i][j]=jisuan(a,h,z,i,j);- h/ b, g% k6 Q. ^. q, v8 K
printf("\n矩阵A的%d次方为:\n",z);
1 D' K4 T- v9 p/ vfor(i=0;i<h;i++)
; o3 Z- q+ t9 v" d6 ]4 Y4 G{
0 J, O6 [( f: |# z  Yfor(j=0;j<h;j++)4 Q6 r; @2 W6 s' U2 \' u
printf(" %d ",a[z-1][i][j]);
* f% M6 G) |4 F8 H3 X7 h8 f$ x1 vprintf("\n");
5 u$ Y: i" K6 r9 V" u3 A}. Z0 ^( c) ~$ a' ^5 e1 x1 i
micifang(a,h,++z);
" e1 Y( r* h7 V5 t0 I}1 ]# ]8 X: R1 ~9 o/ j2 g+ \
}* w5 R" I$ }! ~* l
void buer(int a[N][N][N],int h,int t)
) J2 |" ~" M, L5 J9 K; o{0 j' C* x$ k/ Q. W
int i,j,s=0;) W) W, f! G  A* `5 ^% F
int z=t;
1 w, ~! z! J3 L2 ^if(z<h) //矩阵的值不全为零。2 {  {4 p. V6 i9 k$ H3 C$ l8 x
{
' e9 k* R: P* K' r" gfor(i=0;i<h;i++)
, W$ o3 `! n. m7 {+ efor(j=0;j<h;j++)
, W( F- Y, a4 K3 O- ba[z-1][i][j]=0; //全部赋值为0!( x1 k/ o3 n+ t% o0 K" y3 f5 V& A
for(i=0;i<h;i++)4 q/ m( u0 W- i: [3 z
for(j=0;j<h;j++)
2 h7 f* q  U  `0 p8 {' Ca[z-1][i][j]=jisuan(a,h,z,i,j);5 W& I  m, ?& [  E/ X9 ]
printf("\n矩阵A的%d次布尔幂次方为:\n",z);
4 C0 y5 R5 [) n  D% X0 }- Rfor(i=0;i<h;i++)
6 N& u8 A; F) e) \3 t: u3 L. A{
! \1 n6 X+ X- R( v4 p( @for(j=0;j<h;j++)
4 @" D/ Y1 H# F: ]' N4 d{
0 C# A9 a3 H5 ?( ^) Z8 gif(a[z-1][i][j]>1)/ n6 I6 d4 h3 x& M8 b9 T
a[z-1][i][j]=1;
% v4 c, K' V% N3 iprintf(" %d ",a[z-1][i][j]);( y3 s* c  v. ]. W, r
}( U0 I% S% v6 H9 H4 l% Z( K) J3 f* E
printf("\n");
( N3 P7 g9 R$ S5 W& J}+ m* O- d6 D# f1 O! a. Y8 u
buer(a,h,++z);
$ F& y% G+ ]: w$ l+ U& z% S}
3 {/ J3 \# G- V0 O}
0 f' N5 v; k4 b% Z3 \void warshall(int a[N][N][N],int h)5 o1 M2 G9 Z. `/ ^. j; ?
{
0 u- g/ R2 X; Z. ~+ Pint i,j,p,q,r=0,s;- m* k+ m$ ?) c( ?) y( w% Y7 a7 @1 I7 D
for(j=0;j<h;j++)4 R4 q  J2 T" Y9 {9 J* G
for(i=0;i<h;i++)3 _3 e* x  w2 B  y0 v" [+ B* q2 v
if(i!=j && a[0][i][j]==1)
  z* d5 {2 b6 j2 x5 r{
: i: K& S# A2 T5 C8 jfor(s=0;s<h;s++)' B9 `7 C" ?$ a
{
# F# k; a8 |) s0 f/ V/ Va[0][i][s]=a[0][i][s]+a[0][j][s];8 ^4 U$ Q: o  k. s5 Q
if(a[0][i][s]==2)
! m3 }* N, s/ X5 ta[0][i][s]=1;
' r2 _( R; K8 L, [# ^}
3 k1 D, V$ T5 @3 D  F+ `printf("\n第%d次运算的结果如下:\n",++r);$ T6 O  R; x8 L% d+ h( h" a
for(p=0;p<h;p++)
# J% E: s; B" c{6 U$ v7 o( f# f$ _# L  g
for(q=0;q<h;q++)
4 ?: H3 e2 V3 Qprintf(" %d ",a[0][p][q]);
- [, T' \0 G( U, ?printf("\n");# C' B1 l! N) w& ^  Y4 q  Z+ D% s
}) l+ |( n+ T. R
}3 z/ Y+ P/ t2 n
}
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-10 05:35 , Processed in 2.011877 second(s), 62 queries .

    回顶部