QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |正序浏览
|招呼Ta 关注Ta
#include "stdio.h"
" y* J5 G; i8 n+ {. v#include "string.h"( P: ~1 y% k6 `3 D& R5 d. @
#define N 50 % K1 ]+ u5 u: a: Q: s. s% i
int jisuan(int a[N][N][N],int h,int z,int i,int j);
/ z  D* P! D) P$ w5 d( q: Wvoid micifang(int a[N][N][N],int h,int t);
# K- P, ]# ?/ i7 A: Cvoid buer(int a[N][N][N],int h);" [; O5 d# ~' V5 s
void warshall(int a[N][N][N],int h);
9 h2 L5 w1 r1 p: l4 n, C- W0 Fmain()
- X' ^0 C3 N- O{- A  ^) B- z8 i
int i,h,j,t;: Z' z: e, M' q" P3 n
int a[N][N][N];2 V1 `2 n' s. a2 P- b
printf("请输入邻接矩阵A的行数(或列数):\n");7 i" Z: R( V& U  a: C2 }4 \' ]
scanf("%d",&h);
% J7 K" A# Z! }3 l7 t7 Wprintf("\n请输入邻接矩阵A:\n\n");& s/ a- M( ]3 s" M! N4 Q% n
for(i=0;i<h;i++)
+ \1 ~& R% S* n" t  R: h* q{, j0 X8 P2 A# }) @
printf("请输入邻接矩阵A的第%d行.\n",i+1);0 [, }  H4 Z3 U9 o0 k2 a5 `+ X
for(j=0;j<h;j++)
6 m% X) P4 r' W+ ^8 K8 oscanf("%d",&a[0][i][j]);   ?" i5 H$ L' k9 C$ X" U
}; b. E9 {% c- X
printf("\n邻接矩阵A为:\n");
: U0 T; q& C* `& ?" y: N) Hfor(i=0;i<h;i++)
  |  ?' ~6 Q8 j+ o; C4 [{
) c3 Y9 `2 L2 W( y: H0 E+ C* Dfor(j=0;j<h;j++): _$ I8 i/ h1 [) v+ h2 _9 _" V
printf(" %d ",a[0][i][j]);4 d" V: Z" D$ g% R
printf("\n");( T9 B9 K  J+ w% V- A+ @+ Z0 R2 |
}
! U8 t4 Q6 I0 h! @5 [! T8 jprintf("\n\n\n算法一:\n");( P  K9 K1 l; I- N$ c* k
printf("\n矩阵A的1次方为:\n");
& q1 M$ ], W6 c, y1 O, T/ rfor(i=0;i<h;i++)
+ k1 D* d; o! ~4 _( O% J{
. r3 S7 e: O% x$ ~4 [: Bfor(j=0;j<h;j++)
9 X6 @2 h; p9 gprintf(" %d ",a[0][i][j]);
! R- o; _( g3 J& J7 uprintf("\n");
, w3 H) `- p+ p" [; I}
: r# ~, t, u' v# x  r9 c  mmicifang(a,h,2);
' A. E9 Q& J( g1 u9 R$ |* Z; Z2 Qfor(i=0;i<h;i++)4 L8 }% X4 z- c* E9 T% S) o
for(j=0;j<h;j++)
& u" i, w6 L7 z( k# za[h][i][j]=0; //全部赋值为0!
+ Z, q; |/ F# t9 rfor(i=0;i<h;i++)7 r; v) \' U2 b0 V# U  b3 U! _
for(j=0;j<h;j++)! c' {/ A, X. N5 t; J( E
for(t=0;t<h;t++)
) o! A$ q5 Z1 ]* N& A. j9 ka[h][i][j]=a[h][i][j]+a[t][i][j];
: P5 }' h; A; X+ o+ I: zprintf("\n\nB的值如下:\n");! U6 w. f- r8 Z6 m6 U  {& _! @6 f2 s
for(i=0;i<h;i++)5 H2 u% R2 X8 R6 k  g) T# G4 k
{7 U- y# n3 I- E" ?  \3 f
for(j=0;j<h;j++)/ e2 N& X* {. i" {/ c
printf(" %d ",a[h][i][j]);0 C) @" C& x6 Q. o/ t. F7 h% Z. R
printf("\n");
3 k# S9 N& E5 F) s; {: f8 m}
* `: [  [; W% A: T; x$ Zprintf("\n\n\n算法二:\n");) X3 }! v- l* g5 A
printf("\n矩阵A的1次布尔幂次方为:\n");  P; t4 u. V  o9 H2 `9 ?
for(i=0;i<h;i++)
3 {% [* L7 ^0 Q: Q* L+ I{
! p: L7 g* O& G' Pfor(j=0;j<h;j++)
6 B& U0 t/ B$ B7 H) x{
& z. [" f% m3 k% g2 b9 o% Rif(a[0][i][j]>1)  J. [  j+ d/ {7 P
a[0][i][j]=1;& u; P! e. A% U; }6 Z! l
printf(" %d ",a[0][i][j]);1 G+ w4 }; V  }
}- M* ~5 I" l5 z, N/ Z
printf("\n");" C- Y1 T; F% c7 F- X
}) {# l/ ~) Z: B9 o
buer(a,h,2);" P0 G3 `& F7 P, K7 w# v
printf("\n\nP的值如下:\n");
5 V+ D! l0 R: b; _% G% ^1 L+ afor(i=0;i<h;i++)
  }/ ^) p/ V& O, t{+ A$ U* X7 M: v; ]+ P" T( W+ h
for(j=0;j<h;j++)
9 W, Q9 {7 J& x6 U( L; ~/ l& n{ 9 }# O9 R' \% E' \3 u
if(a[h][i][j]>1)
1 Q  R$ A, }: g  N( G7 s8 p' r0 F5 r% V, Ha[h][i][j]=1;
  x% V& N- _" I9 wprintf(" %d ",a[h][i][j]);# @$ G  q; M0 d2 K! y- b
}! b1 L8 {: A, j# K$ N( B
printf("\n");
+ r8 F2 E3 d2 c- v* `+ z: h0 K}/ q" a  V# y+ U! J' l* N) f
printf("\n\n\nwarshall算法:\n\n");
' a8 j: D7 M( A% j4 Q
) L2 M8 J6 ?0 Rfor(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。2 u. b; ~" _  w% h" m
for(j=0;j<h;j++), Z' R1 P6 L+ _0 |6 x! T  \
if(a[0][i][j]!=0). H/ O; s' c) z( A" g, u1 Z
a[0][i][j]=1;
4 {  j8 t  n% g# k3 H0 iprintf("整理后的可达矩阵为:\n");
* A; O6 I6 x% ?2 v9 u6 }; ifor(i=0;i<h;i++)* u+ ]2 ^6 f0 x( O0 {0 w/ k7 ~
{
8 g2 ^, s( B2 o( u1 i9 pfor(j=0;j<h;j++)
. }- b4 p3 i* y3 q8 kprintf(" %d ",a[0][i][j]);2 g6 E8 {; g. k* M3 d
printf("\n");4 r: g- w+ _' ?4 V! _  H: U$ e
}
. N; N' J. n2 M6 e! N- owarshall(a,h);
0 }$ {4 e; l+ d" ugetch();0 p* k, A" K; i, j
}
6 X! g2 o. H, D6 uint jisuan(int a[N][N][N],int h,int z,int i,int j)
! g3 ?& _( \  K* R5 q% D2 s/ W! v6 o: D{5 l" d7 Q+ x7 g4 J' s, a
int s,jg=0;
# q* H3 J2 p' a' q& uif(z==2)
% `% q' U4 q, m* @for(s=0;s<h;s++)
+ j! z5 D0 m$ D( l9 E* B5 Z8 Ejg=jg+a[z-2][i][s]*a[z-2][s][j];: w9 K+ x8 `; y, H1 j
else % Y( @/ i7 J& c2 z8 i: H
for(s=0;s<h;s++)
/ b2 M- ]+ Z% a, w% ojg=jg+a[z-2][i][s]*a[0][s][j];; r4 o, f  Z9 [
return jg; ' |$ y) ^! ]2 X8 T
}
  I" D0 c% P. q- j! p6 ivoid micifang(int a[N][N][N],int h,int t)$ x. T8 B7 ^: N" B
{
$ g) u8 L! M+ w$ |, x4 Lint i,j,s=0;) U; x7 f: T9 ?( q! a& I
int z=t;4 i, {: s! M1 L( |
if(z<h) //矩阵的值不全为零。
6 \8 f3 H* [7 }/ W( ^. h5 T{
' ~, y* V# l  x) Y: }6 ^% h. Zfor(i=0;i<h;i++), M2 U+ D# a) l
for(j=0;j<h;j++)
& l/ Y, }! K7 W3 Y8 E7 L* @a[z-1][i][j]=0; //全部赋值为0!
9 a1 W1 f! b2 g- U. K, ^! P2 m$ ffor(i=0;i<h;i++)* t6 g7 a3 M( l7 h( r* }% [0 S
for(j=0;j<h;j++)# J6 v  Q1 D8 _0 h' q
a[z-1][i][j]=jisuan(a,h,z,i,j);
1 _$ i, j" _+ Dprintf("\n矩阵A的%d次方为:\n",z);
7 ^8 y! r9 U6 D2 ^6 afor(i=0;i<h;i++)$ g  [3 [9 a. h( J
{
  K& c+ p3 i5 z" D* @2 Qfor(j=0;j<h;j++)
  T1 H+ `" S; |printf(" %d ",a[z-1][i][j]);
+ ~3 R, G, q4 B( U+ gprintf("\n");+ d+ o- J0 d- Q& B
}4 D! @' J' K8 {
micifang(a,h,++z);
" x% x) ]2 K+ ?. x! \  J}% p  `5 p" X0 o' p1 ^. g
}# ?1 l' s0 p" p/ W
void buer(int a[N][N][N],int h,int t)
% k3 l" g5 y3 z{  }( j. m- G% X
int i,j,s=0;
$ k6 J& R0 `$ rint z=t;
- a0 r  ?+ S7 G4 l+ z$ T" C' l: bif(z<h) //矩阵的值不全为零。6 n7 g# a& v4 ^; C5 {5 L
{   [/ D2 G7 @+ c: O( Q7 d9 Q0 T. @
for(i=0;i<h;i++)
) ?5 B; l% D. l  h# Hfor(j=0;j<h;j++)
- b# |3 T1 ^# m) @& Ga[z-1][i][j]=0; //全部赋值为0!/ u% m; l$ U& l5 @# X
for(i=0;i<h;i++)
+ L6 s. V8 ^( i& ^for(j=0;j<h;j++)
# ]- O4 g+ F3 o6 v# j; N0 Xa[z-1][i][j]=jisuan(a,h,z,i,j);) L& Y, @( y1 L: g
printf("\n矩阵A的%d次布尔幂次方为:\n",z);) p( q, [- p# ~
for(i=0;i<h;i++)
% {$ D$ v3 m. F{# _) K9 g" h; v( [
for(j=0;j<h;j++)
0 E8 y/ h$ A7 B+ P{ , J9 H; B: R' g8 C" F( x4 }, x
if(a[z-1][i][j]>1)  Z4 p7 k9 [0 S8 |+ j5 F
a[z-1][i][j]=1;
% q6 k3 d$ j  N- b  T0 |( \printf(" %d ",a[z-1][i][j]);
9 ]- |& {6 v0 F$ @0 J) u}: O' `' b. x8 c* o
printf("\n");
. }* x' ~1 Z& h/ Q5 X+ b}% n% U3 L8 X+ B/ q5 f
buer(a,h,++z);
  `8 s+ l' `& ?. k3 d; A  L, E( @}
" }7 l& Z5 r  d& Z}
+ W$ X9 N5 F8 H8 tvoid warshall(int a[N][N][N],int h)! v4 z' ~2 y3 c" m
{' h$ o  j5 R, h( g6 Z# e! P
int i,j,p,q,r=0,s;& P, n4 K7 h/ W% A
for(j=0;j<h;j++)
& h( n0 ]0 m2 C3 s2 hfor(i=0;i<h;i++)
& p2 v0 [( `+ W7 J' e. Qif(i!=j && a[0][i][j]==1)4 X+ A7 r. x9 E7 R
{
2 L( K+ H* _1 ]% g  Efor(s=0;s<h;s++)
7 X8 g' |' Y( b5 F* R  X: ~$ Q  z{
1 h) h3 u0 C& a5 H) g' E7 ?1 ga[0][i][s]=a[0][i][s]+a[0][j][s];
( o1 K/ V. d/ `if(a[0][i][s]==2)
1 r( K' t+ L% ya[0][i][s]=1;2 |/ f" o  o$ F# B7 }
}
8 @( E# L% ~, w" ^8 g" Vprintf("\n第%d次运算的结果如下:\n",++r);
0 ^; \& E7 n8 d! [( w3 g/ lfor(p=0;p<h;p++)
  S: x" f& K: f' T+ G; ]{
* }1 [: w- w1 ?5 |for(q=0;q<h;q++)2 M7 ]/ `4 w: Z* M
printf(" %d ",a[0][p][q]);
' q4 \) q/ ~# W. Q* mprintf("\n");1 a, Z) }, O# V+ _
}6 m  q- Q. ^- M: W6 C! }3 h
}
5 P1 Q4 E+ k: 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-4-15 06:46 , Processed in 0.498199 second(s), 62 queries .

    回顶部