QQ登录

只需要一步,快速开始

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

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

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

1

主题

2

听众

7

积分

升级  2.11%

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-11 18:03 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include "stdio.h"
- g8 l+ H5 n! n#include "string.h"# g/ s# D% z; J9 S/ k3 k
#define N 50 % R* `3 R* a4 Q7 \7 e) s
int jisuan(int a[N][N][N],int h,int z,int i,int j);
/ a% m4 T1 I# Q, P7 wvoid micifang(int a[N][N][N],int h,int t);: K$ B7 T, M; U& J8 L& u" M7 q
void buer(int a[N][N][N],int h);# v# C8 k' v# v* }7 |3 H3 P
void warshall(int a[N][N][N],int h);! X, i7 c5 }% E# e# o8 K2 b
main()
" O8 ^; A4 o' @: V" k+ t$ i- \{
9 h+ i: i+ [8 D: R+ ?int i,h,j,t;
; k: E3 z$ I+ c9 G, P  P' tint a[N][N][N];) F+ {% I5 E3 L: y4 [/ m3 a3 m% l2 C
printf("请输入邻接矩阵A的行数(或列数):\n");
3 b* K# M. M- Q* a8 i$ Tscanf("%d",&h);
, z1 s* m, `2 sprintf("\n请输入邻接矩阵A:\n\n");) ^5 K- m/ E4 y9 m2 ]" ~  I' u5 P! K3 M5 _
for(i=0;i<h;i++)
. e0 W  I/ n1 ?5 Z3 B{
: ]$ C: J; @) m& j7 Q( M- v% }' sprintf("请输入邻接矩阵A的第%d行.\n",i+1);
/ p8 c8 I' {" _% }for(j=0;j<h;j++)
+ ^1 f/ a5 ?) s  }! |+ Nscanf("%d",&a[0][i][j]);
' ~7 l5 O% _  K# E0 V) U}4 V* C, `7 j& a! M
printf("\n邻接矩阵A为:\n");
2 J/ c$ U% s9 s1 W) i) Mfor(i=0;i<h;i++)8 H% i) ^9 B) V6 r
{
7 i. J+ D( e% m% q2 A5 ^  gfor(j=0;j<h;j++)
4 t% H9 f4 d$ }2 p" J! ~printf(" %d ",a[0][i][j]);
8 M/ p- }' E# ]* Hprintf("\n");6 D- e. D$ u5 a$ l# y. _
}
. P. |4 y- v% N. Iprintf("\n\n\n算法一:\n");2 G/ P0 U( h. }4 Y& G1 k
printf("\n矩阵A的1次方为:\n");
* T# j" u3 k# D) R4 \for(i=0;i<h;i++)
1 Y' r) K, C$ T5 k; q6 B1 V{
/ W* H, s: Y8 k1 ^for(j=0;j<h;j++)
' Z# ~4 G# o7 O- [( J0 x2 Dprintf(" %d ",a[0][i][j]);! \3 u2 [2 Z- z6 F) ?# V$ I
printf("\n");+ ]  C3 R. n2 |2 y$ [# b% q; P  }
}
4 @; J$ _2 V( J  J' n: zmicifang(a,h,2);
8 w) D1 s- Q$ G. C5 K% yfor(i=0;i<h;i++)
: i# o' N. e5 i4 L& ufor(j=0;j<h;j++)- ?( \5 J; Z1 I) d, ?
a[h][i][j]=0; //全部赋值为0!
* a. x7 h- ^: pfor(i=0;i<h;i++)1 y1 G& j& w  d7 I7 R0 F* V8 A& G+ H
for(j=0;j<h;j++)" P; A& ]: [5 T8 x+ C
for(t=0;t<h;t++)
$ f$ Q5 @% X. }. v+ ha[h][i][j]=a[h][i][j]+a[t][i][j];
+ q# @& v, B# C  L) qprintf("\n\nB的值如下:\n");5 w/ K- O( O/ _  Z+ q, f
for(i=0;i<h;i++)
3 Z  u! F) _6 e  \* ^, ~8 X0 S{/ B( b" C, ]  i4 [5 V  h+ G& Q
for(j=0;j<h;j++)
8 p& |) k, C4 |  t: F/ V" u- Gprintf(" %d ",a[h][i][j]);+ p1 {  `, N, B: ^7 h; }
printf("\n");
/ \# @8 k6 Q# f% K$ o  I}
! Z) Q7 @5 Z7 X, h) l! A1 P( N+ gprintf("\n\n\n算法二:\n");# p+ `1 A" ?7 Q: ?8 a) [! K
printf("\n矩阵A的1次布尔幂次方为:\n");
' E. m- ?0 ?2 sfor(i=0;i<h;i++)# y; H# p: K: q/ l& L
{
) {2 e5 C% }9 J) z' ~: o" ?for(j=0;j<h;j++)- [. X. w5 P0 v3 d% {4 N$ m
{* }* a* D- C: d  G( c
if(a[0][i][j]>1)
8 ?; P% a+ |9 M+ l1 ia[0][i][j]=1;4 S! P9 Q) c" {% {" I
printf(" %d ",a[0][i][j]);; J2 _/ u7 |" l4 \# L
}
! e; U  S0 R2 M! J( e% eprintf("\n");$ ^! S9 F" {$ z2 l& X: M$ d3 q
}; ]6 ~5 ~/ H" K% E
buer(a,h,2);8 b/ b& }; V* L2 i
printf("\n\nP的值如下:\n");; j1 w9 }; ^' c7 V0 C/ ~  ?+ n
for(i=0;i<h;i++)7 b& N! A5 M7 ^
{/ L0 m& I# V. A( e$ J6 g2 ~
for(j=0;j<h;j++); K" ~, z0 X: J2 M9 l* E3 y& f
{ . C1 i1 M5 Z: Q; N! B  B+ S
if(a[h][i][j]>1)" h! b- L; [) l  ~+ t- }
a[h][i][j]=1;- W* ~$ F: \& W! [
printf(" %d ",a[h][i][j]);7 G3 d7 K, n0 @, M$ N
}
8 U. ?& q; i/ s" ]  [: P: Eprintf("\n");7 F2 l/ H, Q) ~* b/ y" W
}
8 w8 f/ Y4 K" {0 J0 {5 D8 wprintf("\n\n\nwarshall算法:\n\n");
' ^1 h4 K( e0 F; ^' L1 ^' _* l
: V7 k' v; W9 w6 b6 v3 z1 ^for(i=0;i<h;i++) //处理邻接矩阵A.转化成可达矩阵。
9 ^! X+ G9 V3 Z. p  K2 b  vfor(j=0;j<h;j++)
& w4 I. J* v7 i: j" \+ cif(a[0][i][j]!=0)
6 H  K( X& m, }8 o6 e) F* Ka[0][i][j]=1;8 w' w) _4 n& Y& m8 b1 ~
printf("整理后的可达矩阵为:\n");, i6 _2 B: B5 f
for(i=0;i<h;i++)
  A0 B* D* F4 `8 B{, o( G& \* ~8 j
for(j=0;j<h;j++)' C1 W% E9 @$ z
printf(" %d ",a[0][i][j]);
$ j  K" K& f8 R, h  i( [7 m1 i! xprintf("\n");% }4 r( W8 U; W) \0 A
}5 c, {8 m4 f7 ]
warshall(a,h);
3 A) w. B6 M, `8 r  Ogetch();% t2 M# B$ G$ F
}9 F; `: J. `) @' S2 v1 E
int jisuan(int a[N][N][N],int h,int z,int i,int j)
& R- F. F5 V% g# D/ E$ n{
9 g* G4 ^; w0 m4 e5 d7 Y* Bint s,jg=0;( s8 u4 h" z1 {1 l
if(z==2)8 d7 I) j, X+ t! [7 \- ~
for(s=0;s<h;s++)
! s3 R9 w2 \0 e4 Njg=jg+a[z-2][i][s]*a[z-2][s][j];# O! j, V9 A$ ^, i5 Y1 P4 O
else
( p- h; d8 |% M' U$ W! _for(s=0;s<h;s++)
( I7 x" u6 I0 Z  p" Sjg=jg+a[z-2][i][s]*a[0][s][j];
* U& f6 t% }* |; C. i6 `( ]return jg;
' \# E& J5 [$ a$ ]! w}
* I5 |5 A. L, X) L4 `% uvoid micifang(int a[N][N][N],int h,int t)0 r8 |0 i' h. d" K6 l4 ?" j: |9 ~
{
* D, d7 u8 J0 iint i,j,s=0;
9 [3 x  y+ e- u1 Tint z=t;
2 N% x6 A# C* s) q# n* [if(z<h) //矩阵的值不全为零。
' o  i: V6 p1 V3 z3 h  ], J{   D8 W! V6 w- d" Y; Q; I
for(i=0;i<h;i++)  u3 k" y8 F" D4 W6 ?% J8 G
for(j=0;j<h;j++). u; j- K/ K% W3 Z" h# [0 u
a[z-1][i][j]=0; //全部赋值为0!- E- Q1 |) d5 u* d$ X! W% q
for(i=0;i<h;i++)4 J( E7 O( s5 Z' Q. C
for(j=0;j<h;j++)/ `8 t! O4 E8 X/ r; m/ N  [
a[z-1][i][j]=jisuan(a,h,z,i,j);$ \$ p$ |1 ~& b) j
printf("\n矩阵A的%d次方为:\n",z);% S5 Q- }8 j" l) s, S% s
for(i=0;i<h;i++)
* q. S( g: t- N9 c8 r) ~# p{! c! o/ E" _6 N+ j+ v$ I6 y6 c
for(j=0;j<h;j++)( y& M1 o6 _& C6 ^  G
printf(" %d ",a[z-1][i][j]);
' \5 ^& ^# M3 }3 Y# ~/ pprintf("\n");0 s) P( k4 ~0 h
}
. g! U5 q* k- p. omicifang(a,h,++z);
5 ]% H/ Y6 A3 d9 L) V0 Q, x! ?}
3 S9 X- k; b- \}, Y3 {# ]7 }& f
void buer(int a[N][N][N],int h,int t)
# E, Q; r- s7 z  `6 i{
. s: R9 A. l7 n( S1 N& bint i,j,s=0;
; ]8 a2 O" d4 J5 \( [# q6 ^: J/ hint z=t;; X% `, ?: X* z* Y( P7 z
if(z<h) //矩阵的值不全为零。
/ }# D$ x% ~5 B& q{ ' j; W2 I3 L5 X
for(i=0;i<h;i++)
4 H' N; a# ?) A$ Lfor(j=0;j<h;j++)! c8 I0 C$ w& Z4 K. R
a[z-1][i][j]=0; //全部赋值为0!) g: I1 m+ n6 x  U
for(i=0;i<h;i++)
+ M/ Z$ h. P' y& j; Mfor(j=0;j<h;j++)
0 G& s9 F$ l. a- [% m) \a[z-1][i][j]=jisuan(a,h,z,i,j);
. P/ J" S4 d' U7 Zprintf("\n矩阵A的%d次布尔幂次方为:\n",z);
+ j- B8 _% F6 b; `6 |for(i=0;i<h;i++)) q& P" z7 e) g# u9 Y5 c
{* H, U4 _* Q" {
for(j=0;j<h;j++)
' S6 G- Z# I' W6 s; S  ]{
! C, f. v: d% ?# T) R% v* U, Hif(a[z-1][i][j]>1)1 d1 _  [- a. _/ c4 @6 u" R
a[z-1][i][j]=1; / O  d$ G, R4 j8 j0 f" [6 h
printf(" %d ",a[z-1][i][j]);
2 d7 e" S8 M2 w( m  b}
: b- X% {. I& sprintf("\n");; a1 N- F* ~/ H* f) {0 I
}) T  v; |2 r& d" ?
buer(a,h,++z); ' C) V! P0 O9 I3 Y' v) j& X5 U
}
% f* d0 H* B: ~; ]}! u4 S9 @& v2 y% u) _; G4 K0 l' ^
void warshall(int a[N][N][N],int h)4 \2 Y1 n# |  Z, n" O+ h( z
{) b( p/ z4 T+ E* U# B
int i,j,p,q,r=0,s;
* l( Q! Q8 Y7 e- N) l' [9 Zfor(j=0;j<h;j++)( y5 \. R  G2 K) I6 {  N: E" X1 t1 a* I5 o
for(i=0;i<h;i++)7 y+ v+ H" ~8 D/ q& {) K0 r
if(i!=j && a[0][i][j]==1)! s9 o) ]8 x, \6 k
{
& l& P$ m0 G) j# B" o& ffor(s=0;s<h;s++)0 G4 w* B4 ?- G
{
) _$ w1 r( u$ f1 h3 h/ ~a[0][i][s]=a[0][i][s]+a[0][j][s];
3 w1 o7 B& i* w1 _% l) K6 Iif(a[0][i][s]==2)+ p$ N, B( p8 \% J& |
a[0][i][s]=1;: l$ H0 E  k% _" y: J: ~
} 9 t5 B7 O' @0 @% X+ E
printf("\n第%d次运算的结果如下:\n",++r);
; F# I# z' S. A, Q4 ~1 r$ Pfor(p=0;p<h;p++)
& g" ~" U! [) l0 p. H( O% `; b{
8 E4 R6 @. ^# c2 gfor(q=0;q<h;q++)
# V/ {& `$ \$ M8 v$ I9 xprintf(" %d ",a[0][p][q]);6 n, P' P* _0 n$ {& v
printf("\n");, @. e4 V+ j3 n6 |
}
9 z1 b) m- T# r, n- A}% O5 R. B7 P0 O: g" `8 Z* l
}
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, 2025-9-24 01:54 , Processed in 0.620118 second(s), 57 queries .

    回顶部