QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"& S) u( O/ \1 J7 \7 D' H4 a
#include "string.h"5 H, ^$ }- |4 i0 L1 e- C
#define N 50 1 y2 w& ], p! L. S
int jisuan(int a[N][N][N],int h,int z,int i,int j);
# W2 O  a/ L+ _9 Q/ v6 ]void micifang(int a[N][N][N],int h,int t);; R. k9 r5 z9 g. k5 B
void buer(int a[N][N][N],int h);
2 A8 Z0 {: k* `1 S( wvoid warshall(int a[N][N][N],int h);
1 j  k1 n9 l  G% Ymain()) E% ?1 z$ H8 E" T8 q* w1 G
{. O' E% o# ]. w
int i,h,j,t;
; q) I8 b+ {$ i8 R  ?: e8 x' ~int a[N][N][N];! J* G$ l+ ?! D# f4 Z8 z
printf("请输入邻接矩阵A的行数(或列数):\n");
. e7 r" n% ]1 Q+ d  _* J& kscanf("%d",&h);
7 U( P3 W+ n( hprintf("\n请输入邻接矩阵A:\n\n");
6 Z+ i. c/ l" Dfor(i=0;i<h;i++)) J' u0 p7 |5 V( C- a# J6 _
{
+ @) V. K& ?+ eprintf("请输入邻接矩阵A的第%d行.\n",i+1);
' y. N8 E  M1 i9 P; dfor(j=0;j<h;j++)
. x5 e  @- c# k3 Z! n' Fscanf("%d",&a[0][i][j]); 1 \+ M0 W4 c# s4 c+ I( F) r& o
}+ h) G) m: `8 Y5 W$ F  n
printf("\n邻接矩阵A为:\n");
; X# O! O1 {( S# R% e0 |for(i=0;i<h;i++)
4 {  M! g3 G0 |+ D0 g# k{
5 r" I. S! }( g( yfor(j=0;j<h;j++)2 A, j/ b* t; R7 I5 e! H
printf(" %d ",a[0][i][j]);) F0 j8 A$ \1 Z/ [4 F. \- n
printf("\n");! t7 V6 b; i( N( O+ B0 e, Z
}
( T& V' {$ z, T. Q  U2 Aprintf("\n\n\n算法一:\n");% p1 R1 Q% f# y' @7 f
printf("\n矩阵A的1次方为:\n");
  V! f0 K+ f& Y( n( H- B2 efor(i=0;i<h;i++)
1 P  O5 y! {8 o& u{
6 c% M0 p: p- u* ^/ {# f8 Lfor(j=0;j<h;j++)
' D6 z" Y6 `! c# R2 x" r% h- C; gprintf(" %d ",a[0][i][j]);
1 \, l) e4 `5 J- Yprintf("\n");
- @/ G# g& H" t}
# `1 \# j6 u3 x, e" u4 dmicifang(a,h,2);
0 f8 g! h, t3 \) ^, d7 Kfor(i=0;i<h;i++)/ K0 d; a1 Z  ]* M; c. s
for(j=0;j<h;j++): g* ?& V, _$ e, N/ z% M
a[h][i][j]=0; //全部赋值为0!
& r- s6 C+ K( i7 @6 V4 X: wfor(i=0;i<h;i++)
/ Y6 Q9 b: F1 g; V* rfor(j=0;j<h;j++)' d; l  J9 q3 z# W% I6 X! D
for(t=0;t<h;t++)
8 @: Y: r0 s) `% b  Ua[h][i][j]=a[h][i][j]+a[t][i][j];: `. D- g( M8 U( m9 B5 o) |7 u* d
printf("\n\nB的值如下:\n");  z( f/ F+ l' x  O3 Y, i' p6 I3 D
for(i=0;i<h;i++)* d+ C0 B# \  H! X( k3 p
{0 O2 b# p* [- U
for(j=0;j<h;j++)
. I' Q7 y2 @1 t) [* B/ x9 i$ k5 Z) mprintf(" %d ",a[h][i][j]);
5 T) k0 V2 g% G" b$ B7 |' fprintf("\n");
! _) L% ^. @) a0 t8 o8 A! ^- ?}8 D/ {# s1 O: M# I
printf("\n\n\n算法二:\n");
! s+ y6 p3 @  Nprintf("\n矩阵A的1次布尔幂次方为:\n");
+ `5 w" x2 d; Z- q3 I& N- `  e" a4 Xfor(i=0;i<h;i++)/ a, n+ A' {# s
{
5 |7 _6 m4 w" b# y- B4 Hfor(j=0;j<h;j++)0 g) H* O' c0 t  @
{
) v- C8 U) K# W- V( lif(a[0][i][j]>1)
  Z# k( x4 X3 R- P/ }; Ha[0][i][j]=1;
( }$ u$ p/ X% E5 I# rprintf(" %d ",a[0][i][j]);
- F5 j7 M4 P3 c, _# H}+ Z1 M% t5 `0 Y- v9 R  O
printf("\n");
1 U& J  ^6 `4 m9 Z$ c. d}7 K9 \. ~% e' B# h
buer(a,h,2);
4 N& W1 {" @- R( [* P3 Zprintf("\n\nP的值如下:\n");  T7 [& q. ^" ]5 G; j% |3 v7 L8 A
for(i=0;i<h;i++)
& z& _7 D) C3 I- T- A{
( B& \- ]) s/ f5 ~3 nfor(j=0;j<h;j++)) {2 Z6 N9 f8 n! @8 K& }0 f" I8 n
{ 4 i' W' V0 W! J% ]
if(a[h][i][j]>1)
) A( U* ?; H. Ta[h][i][j]=1;
. f( \2 ?' Z: b% [printf(" %d ",a[h][i][j]);
; V* `' ~; X* W1 q5 L}, ], m( M, U9 ~: z
printf("\n");
" e  V5 z3 b4 y3 I' |" {}$ N  a7 ]. z# w) k: \
printf("\n\n\nwarshall算法:\n\n");3 }9 i8 s2 h$ F, W6 t8 X

1 [7 y. V. |' n8 Cfor(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。' G2 w( {+ h( ~0 _  a" ]$ n
for(j=0;j<h;j++)
, }( v  P/ x$ ^/ n  }% rif(a[0][i][j]!=0)$ Y- E- H0 O$ ~) F: i9 x
a[0][i][j]=1;
! |, d2 n: ]+ S1 v# Z/ qprintf("整理后的可达矩阵为:\n");3 K  K) y2 P  g! i, y( K; z
for(i=0;i<h;i++)- i& P  Q' I0 G  {& t2 _5 }1 l/ X
{# |3 V2 o2 Q% d
for(j=0;j<h;j++)
9 A: t9 H6 X8 Dprintf(" %d ",a[0][i][j]);6 O8 y& w4 X. B& A
printf("\n");
: A9 J4 M- z4 `. S: A$ I}* M; o! b8 `, ?; g4 J( l
warshall(a,h);
, w; ]6 x5 ^: |- dgetch();
+ ?+ p/ _( l8 p. d9 g}
2 l' s# z& l3 z! k* xint jisuan(int a[N][N][N],int h,int z,int i,int j)* I7 T4 N6 Z/ S+ O7 Y. _3 F. g
{- s+ L0 [& S; \
int s,jg=0;/ x+ q& d  U0 e& b) G8 Y
if(z==2). D; s" j& D# Z
for(s=0;s<h;s++)
) Q* b: Q: M" K. Ujg=jg+a[z-2][i][s]*a[z-2][s][j];9 t. }% d; J- c+ f; d
else
! X% U# M; e+ ~for(s=0;s<h;s++)' R. B9 s6 z; R4 }1 P3 _' A
jg=jg+a[z-2][i][s]*a[0][s][j];0 @; p$ B% o2 W0 h% F9 S8 V- I8 b
return jg;
1 A& r7 [. ]$ s! c. T% ]. o}; k5 f7 \7 |. k8 q7 B. p4 S! F$ f
void micifang(int a[N][N][N],int h,int t); o2 u; j+ }8 v. Y" K
{
9 Y  N8 `( w, Q' O5 j4 eint i,j,s=0;
" Z8 r; a5 |& X  V5 Q6 G' {int z=t;
. u. C3 o7 E! k$ w1 Pif(z<h) //矩阵的值不全为零。' A& I9 s" M! y% Z8 N
{ 7 f' h; U$ q- @0 [' i7 O6 ~+ b, k
for(i=0;i<h;i++)
$ M  S, D6 H( K5 z' wfor(j=0;j<h;j++). r( R; `& U: T, }; `8 R( G9 f
a[z-1][i][j]=0; //全部赋值为0!' ?9 `% c, K% ?% b
for(i=0;i<h;i++)
, W/ i, |8 q8 @! l& g0 p* w& mfor(j=0;j<h;j++)) i- j0 o- C/ y/ `7 m$ T
a[z-1][i][j]=jisuan(a,h,z,i,j);" s: u. U( k6 S2 j! f7 @) b2 ~
printf("\n矩阵A的%d次方为:\n",z);5 X# f0 V- a6 i
for(i=0;i<h;i++)0 }3 S# a7 C) X( w$ J
{0 g9 N6 k: `% G# T; J7 u3 g5 a8 |+ V
for(j=0;j<h;j++)& s$ G4 X4 x* P$ |8 K3 U
printf(" %d ",a[z-1][i][j]);: E8 _4 t4 _( @2 |. m/ z2 s
printf("\n");
4 `. p2 d  m, m; q7 }) h1 a0 F+ n9 n}
$ j# o3 R/ \8 u) K1 K1 @- omicifang(a,h,++z); . P9 ^  m6 r" M  @/ q0 _
}
3 T! g7 S  Y( ~2 t* B/ l}
3 Q) ^, W5 ]6 G+ W7 |void buer(int a[N][N][N],int h,int t)
/ I: J- F  |8 M/ G7 \1 U! `{
9 t3 q* F4 H% ?- e+ z) n0 D+ bint i,j,s=0;$ K, s' z' p. V8 F
int z=t;! w; L: L2 t) S  u( a5 X. D/ r5 k
if(z<h) //矩阵的值不全为零。% w: r3 v' [. O5 h
{ 0 n& Z& L+ A# i# `
for(i=0;i<h;i++)% B7 ]" l: m" D$ y1 s' n- N
for(j=0;j<h;j++)8 y! J* U3 v3 [! m
a[z-1][i][j]=0; //全部赋值为0!' D5 ]0 i: _& W7 B
for(i=0;i<h;i++), s0 Q: A$ I% n
for(j=0;j<h;j++)  E7 ]: d( P6 _$ B, L( P
a[z-1][i][j]=jisuan(a,h,z,i,j);
. f6 Z# Y3 l, ]+ E, m; S4 Xprintf("\n矩阵A的%d次布尔幂次方为:\n",z);+ {* O- L9 b; E4 t+ C6 k
for(i=0;i<h;i++), f7 i# d% ]; i# \! |$ I
{
' @2 @4 t# V/ S; f# g$ kfor(j=0;j<h;j++)" B* ^; |( `; g* W: l
{
% K2 w! T) i( N% P; H2 B- q" }% tif(a[z-1][i][j]>1)4 I/ e' q  B4 W0 q* `0 n
a[z-1][i][j]=1;   w9 O2 y8 a$ S% c9 O
printf(" %d ",a[z-1][i][j]);1 g. J9 I/ Z2 p* X2 q
}
/ X9 }6 F4 t9 |: B  k: aprintf("\n");
' `/ o* Q% `" O" A}6 d9 Y, @1 ?3 ^; ?
buer(a,h,++z); 2 m  L" Z% }9 {3 k3 y4 k
}
0 L) D- d. j% T- L}. f# `4 g4 z9 Y( e
void warshall(int a[N][N][N],int h)
/ j8 q% B! d' h; i# d' O{. D! G3 p$ z( w9 W+ J
int i,j,p,q,r=0,s;$ I2 y' F9 F4 D! c
for(j=0;j<h;j++)
7 E% Z; x+ ^! V! E& Jfor(i=0;i<h;i++)2 h6 r- |0 g# v1 o# D1 F
if(i!=j && a[0][i][j]==1)8 S. P2 r8 F* [1 [& n& E8 y# H
{/ Y7 E4 {& N4 R) J" V
for(s=0;s<h;s++)2 m. `+ ?2 E% \
{
- S6 N  j  z( n1 w& _4 G  w8 Ta[0][i][s]=a[0][i][s]+a[0][j][s];
* j  n! w& I8 ^5 o; p& J1 ^if(a[0][i][s]==2)' A  r9 l. I+ o$ S. G; `: ?9 z
a[0][i][s]=1;
& F# U, |  ?# E% t1 {3 a}
6 S* |% r2 r% W" P8 y1 Dprintf("\n第%d次运算的结果如下:\n",++r);) g* z' Z0 m+ Z# r
for(p=0;p<h;p++)9 n. g. D  k" K' }2 V* m& r
{) X- W8 g- ~* Z0 L8 }( e: S
for(q=0;q<h;q++)
6 o" B' a% }, K" xprintf(" %d ",a[0][p][q]);
( L, f/ G( D1 [! }+ {: Pprintf("\n");
6 [4 V: |  G" F! t2 ]9 F}6 C3 s. @7 F3 M% s4 f! `# I+ Q
}
, W/ I  A9 A7 r: Q}
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-21 11:23 , Processed in 4.503143 second(s), 62 queries .

    回顶部