青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

方陣乘法,矩陣乘法,Strassen 算法——算法作業(yè) 2.3,EOJ 1050

方陣相乘
Time Limit:1000MS Memory Limit:30000KB

Description

實(shí)現(xiàn)兩個(gè)n*n 方陣相乘的Strassen 算法,這里假設(shè) n 為 2 的方冪。

Input

第一行為一個(gè)正整數(shù)N,表示有幾組測(cè)試數(shù)據(jù)。
每組測(cè)試數(shù)據(jù)的第一行為一個(gè)正整數(shù)n(1<=n<=100),n為2的方冪,表示方陣n*n
接下去的n行表示第一個(gè)方陣,每行有n個(gè)整數(shù),用空格分開(kāi)。
再接下去的n行表示第二個(gè)方陣,每行有n個(gè)整數(shù),用空格分開(kāi)。

Output

對(duì)于每組測(cè)試出據(jù),輸出n行,每行有n個(gè)整數(shù),用空格分開(kāi),不能有多余的空格。

Sample Input

1
2
1 2
3 4
5 6
7 8

Sample Output

19 22
43 50



樸素的矩陣乘法
 1#include <iostream>
 2#include <cstdio>
 3 
 4using namespace std;
 5 
 6const int L = 103;
 7 
 8int a[ L ][ L ], b[ L ][ L ], c[ L ][ L ];
 9 
10int main() {
11        int td, n, i, j, k, tmp;
12        scanf( "%d"&td );
13        while ( td-- ) {
14                scanf( "%d"&n );
15                for ( i = 0; i < n; ++i )
16                        for ( j = 0; j < n; ++j )
17                                scanf( "%d"&a[ i ][ j ] );
18                for ( i = 0; i < n; ++i )
19                        for ( j = 0; j < n; ++j )
20                                scanf( "%d"&b[ i ][ j ] );
21                for ( i = 0; i < n; ++i )
22                        for ( j = 0; j < n; ++j ) {
23                                tmp = 0;
24                                for ( k = 0; k < n; ++k )
25                                        tmp += a[ i ][ k ] * b[ k ][ j ];
26                                c[ i ][ j ] = tmp;
27                        }

28                for ( i = 0; i < n; ++i ) {
29                        printf( "%d", c[ i ][ 0 ] );
30                        for ( j = 1; j < n; ++j )
31                                printf( " %d", c[ i ][ j ] );
32                        printf( "\n" );
33                }

34        }

35        return 0;
36}

37


Strassen 算法

  1#include <iostream>
  2#include <cstdio>
  3 
  4using namespace std;
  5 
  6#define  L     102
  7#define  LIM   400
  8 
  9typedef int Mat[ L ][ L ];
 10 
 11Mat buf[ LIM ];
 12int top;
 13 
 14void input( int a[][L], int n ) {
 15        int i, j;
 16        for ( i = 1; i <= n; ++i ) {
 17                for ( j = 1; j <= n; ++j ) {
 18                        scanf( "%d"&a[ i ][ j ] );
 19                }

 20        }

 21}

 22 
 23void output( int c[][L], int n ) {
 24        int i, j;
 25        for ( i = 1; i <= n; ++i ) {
 26                for ( j = 1; j < n; ++j ) {
 27                        printf( "%d ", c[ i ][ j ] );
 28                }

 29                printf( "%d\n", c[ i ][ j ] );
 30        }

 31}

 32 
 33void getint a[][L], int a11[][L], int a12[][L], int a21[][L], int a22[][L], int n ) {
 34        int i, j;
 35        for ( i = 1; i <= n; ++i ) {
 36                for ( j = 1; j <= n; ++j ) {
 37                        a11[ i ][ j ] = a[ i     ][ j     ];
 38                        a12[ i ][ j ] = a[ i     ][ j + n ];
 39                        a21[ i ][ j ] = a[ i + n ][ j     ];
 40                        a22[ i ][ j ] = a[ i + n ][ j + n ];
 41                }

 42        }

 43}

 44 
 45void put( int a[][L], int a11[][L], int a12[][L], int a21[][L], int a22[][L], int n ) {
 46        int i, j;
 47        for ( i = 1; i <= n; ++i ) {
 48                for ( j = 1; j <= n; ++j ) {
 49                        a[ i     ][ j     ] = a11[ i ][ j ];
 50                        a[ i     ][ j + n ] = a12[ i ][ j ];
 51                        a[ i + n ][ j     ] = a21[ i ][ j ];
 52                        a[ i + n ][ j + n ] = a22[ i ][ j ];
 53                }

 54        }

 55}

 56 
 57void add( int c[][L], int a[][L], int b[][L], int n ) {
 58        int i, j;
 59        for ( i = 1; i <= n; ++i ) {
 60                for ( j = 1; j <= n; ++j ) {
 61                        c[ i ][ j ] = a[ i ][ j ] + b[ i ][ j ];
 62                }

 63        }

 64}

 65 
 66void sub( int c[][L], int a[][L], int b[][L], int n ) {
 67        int i, j;
 68        for ( i = 1; i <= n; ++i ) {
 69                for ( j = 1; j <= n; ++j ) {
 70                        c[ i ][ j ] = a[ i ][ j ] - b[ i ][ j ];
 71                }

 72        }

 73}

 74 
 75void mul( int c[][L], int a[][L], int b[][L], int n ) {
 76#define  ADD(m)  Mat &m = buf[ top++ ]
 77#define  ADDS(a)  ADD(a##11); ADD(a##12); ADD(a##21); ADD(a##22)
 78#define  ENTER  ADDS(a); ADDS(b); ADDS(c); ADD(d1); ADD(d2); ADD(d3); ADD(d4); ADD(d5); ADD(d6); ADD(d7); ADD(t1); ADD(t2)
 79#define  LEAVE  top -= 21
 80 
 81        ENTER;
 82 
 83        if ( top >= LIM ) {
 84                // for debug
 85                fprintf( stderr, "buf overflow!!" );
 86                LEAVE;
 87                return;
 88        }

 89 
 90 
 91        if ( n < 1 ) {
 92                LEAVE;
 93                return;
 94        }

 95        if ( n == 1 ) {
 96                c[ 1 ][ 1 ] = a[ 1 ][ 1 ] * b[ 1 ][ 1 ];
 97                LEAVE;
 98                return;
 99        }

100        n >>= 1;
101        get( a, a11, a12, a21, a22, n );
102        get( b, b11, b12, b21, b22, n );
103 
104        add( t1, a11, a22, n );
105        add( t2, b11, b22, n );
106        mul( d1, t1, t2, n );
107 
108        add( t1, a21, a22, n );
109        mul( d2, t1, b11, n );
110 
111        sub( t2, b12, b22, n );
112        mul( d3, a11, t2, n );
113 
114        sub( t2, b21, b11, n );
115        mul( d4, a22, t2, n );
116 
117        add( t1, a11, a12, n );
118        mul( d5, t1, b22, n );
119 
120        sub( t1, a21, a11, n );
121        add( t2, b11, b12, n );
122        mul( d6, t1, t2, n );
123 
124        sub( t1, a12, a22, n );
125        add( t2, b21, b22, n );
126        mul( d7, t1, t2, n );
127 
128        add( t1, d1, d4, n );
129        sub( t2, d5, d7, n );
130        sub( c11, t1, t2, n );
131 
132        add( c12, d3, d5, n );
133 
134        add( c21, d2, d4, n );
135 
136        add( t1, d1, d3, n );
137        sub( t2, d2, d6, n );
138        sub( c22, t1, t2, n );
139 
140        put( c, c11, c12, c21, c22, n );
141 
142        LEAVE;
143}

144 
145int main() {
146        int td, n, a[ L ][ L ], b[ L ][ L ], c[ L ][ L ];
147        scanf( "%d"&td );
148        while ( td-- > 0 ) {
149                top = 0;
150                scanf( "%d"&n );
151                input( a, n );
152                input( b, n );
153                mul( c, a, b, n );
154                output( c, n );
155        }

156        return 0;
157}

158


我的實(shí)現(xiàn)有點(diǎn)丑。。。

posted on 2011-03-28 19:46 coreBugZJ 閱讀(1412) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 課內(nèi)作業(yè)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久一区欧美| 欧美日韩亚洲国产一区| 国产视频一区二区三区在线观看| 一区二区三区久久网| 午夜在线精品| 黄色小说综合网站| 欧美久久九九| 久久国产视频网站| 日韩亚洲精品电影| 久久这里有精品视频| 久久精品欧美| 99精品久久| 日韩午夜激情电影| 亚洲一区二区在线播放| 91久久精品一区| 国产日韩精品一区二区三区在线| 国产精一区二区三区| 欧美日韩免费观看一区二区三区 | 欧美激情小视频| 久久久精品视频成人| 在线亚洲欧美专区二区| 国内成人精品视频| 国产精品视频免费在线观看| 欧美精品激情在线观看| 久久久国产成人精品| 亚洲欧美在线磁力| 正在播放欧美一区| 日韩亚洲精品视频| 亚洲欧美综合精品久久成人| 久久一二三区| 久久天堂av综合合色| 欧美国产成人精品| 久久综合色一综合色88| 久久精品国产亚洲5555| 欧美成人黑人xx视频免费观看| 久久久精品2019中文字幕神马| 欧美激情综合网| 国产日产精品一区二区三区四区的观看方式| 欧美区亚洲区| 加勒比av一区二区| 91久久精品日日躁夜夜躁国产| 亚洲一区视频在线| 欧美二区在线播放| 亚洲精品乱码| 国产一区二区三区免费不卡| 国产精品丝袜久久久久久app| 亚洲国产精品欧美一二99| 狠狠色综合日日| 亚洲欧美精品一区| 久久成人一区二区| 久久久在线视频| 国产一区二区欧美| 亚洲午夜黄色| 欧美一区三区三区高中清蜜桃 | 亚洲美女区一区| aa级大片欧美| 亚洲男女毛片无遮挡| 亚洲国产精品久久久久秋霞蜜臀| 亚洲国产精选| 久久频这里精品99香蕉| 国产精品亚洲аv天堂网| 亚洲天堂免费观看| 久久久久一区二区三区| 亚洲图片你懂的| 久久久久久久久久看片| 欧美激情国产高清| 亚洲激情av在线| 亚洲欧美春色| 亚洲视频图片小说| 国产精品久久久久一区二区三区 | 久久久久99| 久久er99精品| 欧美国产日韩xxxxx| 悠悠资源网久久精品| 亚洲一区二区三区欧美| 日韩视频精品在线| 欧美特黄视频| 亚洲黄色一区| 91久久久久久久久| 欧美尤物一区| 在线欧美视频| 久久国产精品99精品国产| 亚洲视频在线视频| 国产欧美在线观看| 麻豆国产精品va在线观看不卡| 午夜在线一区二区| 欧美一级视频免费在线观看| 欧美精品首页| 亚洲免费视频一区二区| 欧美一区1区三区3区公司| 在线观看日韩av电影| 亚洲第一中文字幕| 欧美国产视频在线观看| 欧美另类一区| 久久国产免费| 欧美不卡在线| 欧美在线你懂的| 欧美va天堂va视频va在线| 欧美成人黑人xx视频免费观看| 亚洲伦理在线| 亚洲欧美日韩在线观看a三区| 激情综合激情| 一区二区免费在线视频| 国产一区二区三区在线免费观看 | 亚洲国产一区二区三区高清 | 亚洲国产精品一区二区久| 亚洲第一精品夜夜躁人人爽| 久久99伊人| 一区二区动漫| 欧美在线亚洲一区| 亚洲午夜影视影院在线观看| 久久久久欧美| 亚洲欧美日韩中文播放| 夜夜狂射影院欧美极品| 欧美久久久久久| 久久久www成人免费毛片麻豆| 欧美激情1区2区| 久久久精彩视频| 国产精品美女| 亚洲理伦电影| 国产精品自拍三区| 亚洲日本欧美天堂| 伊人婷婷欧美激情| 亚洲一级影院| 国产精品99久久久久久www| 久久久亚洲精品一区二区三区| 香港久久久电影| 欧美三区在线视频| 91久久嫩草影院一区二区| 在线观看成人小视频| 亚洲欧美日韩一区二区在线| 亚洲在线观看视频| 欧美日韩国产一区| 欧美一区二区在线播放| 欧美日韩视频在线第一区| 欧美激情精品久久久久久久变态 | 欧美h视频在线| 欧美二区在线看| 最近看过的日韩成人| 久久影院亚洲| 亚洲国产精品高清久久久| 亚洲精品自在在线观看| 欧美精品一区二区三区高清aⅴ| 亚洲高清视频一区二区| 99视频有精品| 国产精品yjizz| 欧美成人福利视频| 国产精品r级在线| 一区二区三区.www| 亚洲欧美色婷婷| 美女尤物久久精品| 先锋影音国产精品| 国产欧美亚洲一区| 欧美一级视频| 欧美成人有码| 99在线热播精品免费| 国产精品国产三级国产aⅴ入口 | 日韩一二在线观看| 欧美激情综合五月色丁香小说| 亚洲国产日韩精品| 一本久久a久久精品亚洲| 欧美第一黄色网| av不卡在线| 国产美女精品在线| 欧美在线观看你懂的| 久久久久一区二区| 亚洲美女网站| 欧美日韩在线一区| 亚洲男人影院| 亚洲国产精品久久精品怡红院 | 欧美福利小视频| 亚洲国产精品成人一区二区| 麻豆成人综合网| 亚洲一区二区三区777| 国产精品久久久一区二区| 亚洲视频视频在线| 欧美一区在线直播| 亚洲精品免费在线观看| 久久精品一区二区| 欧美顶级艳妇交换群宴| 99精品免费| 国产亚洲精久久久久久| 美女久久一区| 亚洲精品一区二区三区樱花| 亚洲一区在线观看视频| 亚洲国产导航| 欧美日韩天天操| 性欧美精品高清| 久久国产精品72免费观看| 亚洲精品国精品久久99热一| 欧美午夜精品久久久| 久久精品日产第一区二区| 91久久一区二区| 久久久精品国产免费观看同学| 一区二区三区|亚洲午夜| 国产一区清纯| 欧美三级第一页| 亚洲日韩第九十九页| 欧美成人一区二区在线| 午夜在线视频一区二区区别|