QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"7 t! A0 @' {6 w- n
#include "string.h"- {! c( {5 |3 B8 i, Y" g% s& a
#define N 50 2 i/ j0 _% q7 c( a* y
int jisuan(int a[N][N][N],int h,int z,int i,int j);8 S$ Y: Z! {9 \% z
void micifang(int a[N][N][N],int h,int t);
7 K1 A- i9 ~- i8 p" Avoid buer(int a[N][N][N],int h);
5 d0 M1 |4 H5 }1 wvoid warshall(int a[N][N][N],int h);6 B8 f, h3 l- k/ s
main()6 o$ D  t; h/ j
{
1 R( q" ?9 s5 L  vint i,h,j,t;
8 k, |4 X) O- @4 M& w  C4 cint a[N][N][N];- p/ A& K( p5 b2 ~5 n
printf("请输入邻接矩阵A的行数(或列数):\n");
% h8 L  ]4 o+ O" `, l+ d6 hscanf("%d",&h);
  e& S' Q& H9 D4 h' A0 Zprintf("\n请输入邻接矩阵A:\n\n");0 m" e- N/ G$ ~
for(i=0;i<h;i++)- B. T6 z$ K" A2 Z2 H* P' {% g
{
: }: L: ~9 B( [. \, p2 bprintf("请输入邻接矩阵A的第%d行.\n",i+1);9 T- L/ t0 }+ w* ^+ J
for(j=0;j<h;j++)! J7 u$ l2 v5 ~* v! e: M" G' }
scanf("%d",&a[0][i][j]); ) q, _" m8 s. |3 _
}
+ H" Q" N- |! F( @) R/ G! Wprintf("\n邻接矩阵A为:\n");$ b6 b  r4 x) l2 X9 ]
for(i=0;i<h;i++)1 q* R% M1 a$ `7 Z
{! {9 Y% g6 |% B$ Q; \, c9 N6 N6 [
for(j=0;j<h;j++)$ ^2 c  m* b+ [5 y) u& p
printf(" %d ",a[0][i][j]);9 F$ [' |. e4 {
printf("\n");5 Y/ ]3 K$ b$ y" }
}
/ \5 O3 s! Q2 ?$ ]8 W+ v" xprintf("\n\n\n算法一:\n");
& C# q1 R- d$ p8 d! Fprintf("\n矩阵A的1次方为:\n");/ Y) I$ a9 p2 I, F
for(i=0;i<h;i++)
+ J" ?$ r9 v  P' v& w, ~) N' i7 w{( E1 I+ F; R1 q+ R; s" l
for(j=0;j<h;j++)$ V  ^( h* K& L0 X
printf(" %d ",a[0][i][j]);# P' s$ ~9 \! {5 C: [) P
printf("\n");
! G: f& u! c6 I( `}0 f7 g* W8 t! ]
micifang(a,h,2);6 e5 G* v" j8 \9 c
for(i=0;i<h;i++): z. n$ g. u+ R/ X+ x
for(j=0;j<h;j++)" v1 f0 X4 h1 i% y; P# U
a[h][i][j]=0; //全部赋值为0!
+ I0 P) i' t$ M/ t4 y' Vfor(i=0;i<h;i++)
) a& g1 e* u6 f5 T2 Yfor(j=0;j<h;j++)
6 O/ e0 m7 c$ \% I: r: j! jfor(t=0;t<h;t++)
; _# j; ~& `2 ga[h][i][j]=a[h][i][j]+a[t][i][j];) Y' G3 L: V: K- U8 G
printf("\n\nB的值如下:\n");- V6 Z0 q; ^8 p) r- [+ m' i
for(i=0;i<h;i++)7 Z- Z/ q4 Y5 q9 w4 \
{. q7 w+ k7 t( x1 t
for(j=0;j<h;j++)9 k; ]' X# r2 z$ Z
printf(" %d ",a[h][i][j]);
1 P- V$ J" x+ v$ ^$ {printf("\n");& U8 ?# E. F9 D+ r9 B6 ~: G
}
. l6 h8 b+ x' i4 `- k" Qprintf("\n\n\n算法二:\n");, b! C1 k0 F6 O3 H$ g
printf("\n矩阵A的1次布尔幂次方为:\n");% |! J) L5 J1 a/ ^! ]
for(i=0;i<h;i++)- Z1 a8 x! J: J: s5 U+ |; J1 l
{& Y! t- P% R" L/ ]  F2 s, y
for(j=0;j<h;j++)
$ x4 V& a+ x5 b. U! s{
0 ?5 t  k0 i5 u# L9 I: Rif(a[0][i][j]>1)
' L' ]7 S. X5 V! X  Ga[0][i][j]=1;% J. }1 C, U8 B& M/ t
printf(" %d ",a[0][i][j]);- n& ]- t$ Y+ u5 p
}
' W% i) ^9 f7 \" u7 s* O# z' `  Q+ Eprintf("\n");# J4 L* e& L3 f4 E1 g* L- h
}
, L) X1 d* l! X( \. |buer(a,h,2);- W1 [' J+ B$ h2 }8 b6 G' U
printf("\n\nP的值如下:\n");
3 `# m" A6 a+ a- R$ I6 ]: \/ vfor(i=0;i<h;i++)2 d. A: s* e% n7 Q  |
{2 E) z4 Q/ p# M  O
for(j=0;j<h;j++)
! h; I2 @* a8 m7 V5 z( j5 n6 ]6 B{ 4 Z5 I# ?/ R/ P7 d9 s4 |. ~3 E# ^
if(a[h][i][j]>1)
5 K4 c5 D; z; J# _3 Q5 Ua[h][i][j]=1;
* ^' j; E4 O7 ]' J0 pprintf(" %d ",a[h][i][j]);" U" e$ h) F" l5 o$ n9 d
}  u$ @) l" d) _  J: d
printf("\n");
3 V; w( b9 e3 B}
# W8 R% |2 ]$ d$ mprintf("\n\n\nwarshall算法:\n\n");- c) z7 e- ?) V' d' T' A; X

! m) F3 ]- h$ E9 O0 c6 c, v) Zfor(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。
0 b6 E6 [! o& r& Yfor(j=0;j<h;j++)5 z8 l# @) X6 N. S* n% p6 Y7 b' a
if(a[0][i][j]!=0)
' J5 n% f3 y% J: ]8 z" ia[0][i][j]=1;
. s) \% S1 ]2 u6 [# i7 v; vprintf("整理后的可达矩阵为:\n");
6 R$ p+ q) A: D8 L) B8 Tfor(i=0;i<h;i++)
& L( h* ]2 S" l$ [{% @9 j7 y) U8 a$ o% l
for(j=0;j<h;j++)9 S7 V# n0 r6 W& m/ z
printf(" %d ",a[0][i][j]);
# r6 M; [% |0 f! x3 G* sprintf("\n");/ e" M$ C0 v6 _! r
}8 Y) ~- ]. I" f# _- a
warshall(a,h);
0 i8 |0 ?5 y6 c0 y8 {, pgetch();7 D) w4 H' N" N% W, U; ~
}9 Z3 ?1 q3 |9 _5 ^& L# K! Y
int jisuan(int a[N][N][N],int h,int z,int i,int j)
  k$ e+ X- W6 z; k( i$ h{
% B2 p3 p6 H7 Uint s,jg=0;7 T+ e" D6 {. t# l) R
if(z==2)5 Z! k' R, S4 q0 p9 [
for(s=0;s<h;s++)
- R8 v) ]& z9 _# m# rjg=jg+a[z-2][i][s]*a[z-2][s][j];" a4 j' [6 X. a/ k
else ) ~" N' V; d/ Q6 H1 w! D
for(s=0;s<h;s++)9 o6 t# X" a  ^' Y: |+ h6 D. u
jg=jg+a[z-2][i][s]*a[0][s][j];
. y+ |- P! I( a1 greturn jg;
7 }6 k) O9 Y( d3 a: [) s' c4 J}# e/ x" m; s% L$ `& `+ B
void micifang(int a[N][N][N],int h,int t)" b, i- t; P: I) ^. T; Z  ]0 p
{$ K0 B6 Q1 d2 y- @' M
int i,j,s=0;! m: D6 Y- S1 Q" e
int z=t;
0 w. b, [' m5 Y* mif(z<h) //矩阵的值不全为零。
" ]* S5 Z* c$ A( B  |{
! e1 F+ y- L8 h4 \5 G* S9 Ufor(i=0;i<h;i++)0 v0 i8 F- U; e: B" U  }. }
for(j=0;j<h;j++)& m& C2 ^& ]: r( ^1 j! U. _* z8 {
a[z-1][i][j]=0; //全部赋值为0!
( Y) w/ l2 Z" [6 H, I& kfor(i=0;i<h;i++), U- q7 f5 _3 o4 W4 |- H
for(j=0;j<h;j++)
# A' S1 n' T( y0 }0 q4 d# \a[z-1][i][j]=jisuan(a,h,z,i,j);
  \9 Q. i  _' y9 k- tprintf("\n矩阵A的%d次方为:\n",z);
, l2 ]$ z7 r$ C0 ifor(i=0;i<h;i++)( Y4 ?: ~+ I: [, D4 J
{
) s# M; g+ t+ f  Cfor(j=0;j<h;j++)
+ n# v5 `; u8 Y% Gprintf(" %d ",a[z-1][i][j]);) t: Z1 U, P) c) r
printf("\n");4 t8 w) ^$ `/ z
}
+ M  |- x! b: t4 ?* y8 V% D  Rmicifang(a,h,++z); ' a) D  c$ o( N1 E- v1 ~/ m  ^
}
8 ?0 H) g2 f2 M}" F! N/ f  Q5 s5 F) s3 ~7 o
void buer(int a[N][N][N],int h,int t)
8 L" V  Q, ^- Q. Y; M; v{
  |# ^/ x" b( E" C+ |8 jint i,j,s=0;& a. d5 B& \/ K3 [# r0 L. N
int z=t;2 J% P$ j  j4 Y
if(z<h) //矩阵的值不全为零。
7 {$ D" u; I" [: ]4 U+ K9 v6 ^{
& i& H% z* c& _for(i=0;i<h;i++)
9 g+ ~/ d2 e* E! C" }! Ofor(j=0;j<h;j++)1 ^! X- ^! f" O0 W7 b8 }# g/ F  }1 `5 x
a[z-1][i][j]=0; //全部赋值为0!
5 O5 }+ m6 q3 A, Y3 m9 `" rfor(i=0;i<h;i++)8 m3 y* t% B1 E5 \! S! U
for(j=0;j<h;j++)
" r+ n, I8 B4 N9 z4 \* }0 ha[z-1][i][j]=jisuan(a,h,z,i,j);9 k& k" E0 y' u
printf("\n矩阵A的%d次布尔幂次方为:\n",z);+ m, v# ^7 ?3 u/ e% h  R
for(i=0;i<h;i++)
5 J( g. M. \3 ~1 k# a{
' B1 w* M4 ~  P) t0 Q" L8 s5 Ufor(j=0;j<h;j++); P4 K) E" N8 [  @: _* @
{
' r: W5 i1 m5 W- K- {if(a[z-1][i][j]>1)  M: M  m* n; w+ C' @& `
a[z-1][i][j]=1;
5 [4 A, V, E* u. }" I6 w! T4 {- `printf(" %d ",a[z-1][i][j]);9 o; x7 X" T7 K3 \$ s$ I3 v
}3 T: f- @6 O+ {# K0 J8 D( b/ ~
printf("\n");
- j" i: t& G+ E' _! f) o/ |+ ^+ {}5 G; X3 Z$ a2 v# O$ t" C& W& Y
buer(a,h,++z); " u# u& {5 y$ J
}' k2 l* G2 g  [9 m, e: N
}
4 R: W, z" P! b7 m2 bvoid warshall(int a[N][N][N],int h)* J$ L2 K) _$ r, e1 j7 \
{% Q: D/ k* _% y6 S: ~
int i,j,p,q,r=0,s;
) i7 h$ w: Y5 b3 I, r. X9 w# x9 lfor(j=0;j<h;j++)$ Z9 n1 U! |8 m
for(i=0;i<h;i++)
, T& B) l( z! m# eif(i!=j && a[0][i][j]==1)# y, C) J4 D: s# t5 G4 E) ]
{" R3 k9 h" i$ q4 J, G/ k
for(s=0;s<h;s++)2 H: p5 {1 H+ x/ `8 w5 L* e
{
+ y; W4 @' b, B! V7 k" l) a) J: j2 Ha[0][i][s]=a[0][i][s]+a[0][j][s];
0 O4 u& j' f6 {( l1 s3 `if(a[0][i][s]==2)
; f0 U) U/ V& ia[0][i][s]=1;
( X) T9 L! }4 @5 f" f}
% ]: C6 C# B, O3 a4 f' w5 `printf("\n第%d次运算的结果如下:\n",++r);8 z3 P% n. D* O1 d8 C4 \9 Z
for(p=0;p<h;p++)
1 w# J* b: G- K8 d4 M* N7 m7 G{
, m9 y' ~  L2 v0 C, H4 z* z' Sfor(q=0;q<h;q++)2 M; N9 @2 f& i& O% @5 k  ?6 E
printf(" %d ",a[0][p][q]);: F+ B7 I" M1 p, ^; T
printf("\n");! b1 {2 [" Z2 O
}
6 w3 M* P% w0 v% P" v- Z}/ U4 _2 f. `: y1 a: ]# q/ i7 V1 |
}
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 13:18 , Processed in 0.467736 second(s), 61 queries .

    回顶部