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

coreBugZJ

此 blog 已棄。

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

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

Description

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

Input

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

Output

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

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


我的實現(xiàn)有點丑。。。

posted on 2011-03-28 19:46 coreBugZJ 閱讀(1412) 評論(0)  編輯 收藏 引用 所屬分類: 課內(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精品国产在热久久下载| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产精品视频免费观看| 欧美网站大全在线观看| 欧美日韩免费| 国产女主播一区二区| 狠狠色丁香久久婷婷综合丁香| 狠狠色伊人亚洲综合网站色| 亚洲精品你懂的| 亚洲免费在线观看| 久久久久国产精品人| 欧美成在线观看| 日韩一区二区久久| 欧美在线视频观看| 欧美国产先锋| 国产精品视频一区二区三区| 狠狠色综合日日| 一区二区三区高清不卡| 久久久精品欧美丰满| 亚洲欧洲综合另类| 亚洲一区二区av电影| 久久中文在线| 国产伦精品一区二区三| 亚洲精品视频在线观看免费| 久久国产精品一区二区三区| 亚洲高清二区| 欧美在线黄色| 欧美涩涩网站| 亚洲精品少妇网址| 久久人人超碰| 亚洲天堂网在线观看| 蜜桃av一区二区三区| 国产精品一区二区视频| 亚洲激情午夜| 久久精品视频一| 亚洲免费观看高清完整版在线观看熊| 欧美一区二区在线播放| 国产精品国产a| 亚洲精品一区二区三区婷婷月| 久久精品一区二区国产| 亚洲午夜精品在线| 欧美国产精品一区| 亚洲国产精品高清久久久| 久久久久久一区| 亚洲欧美综合| 国产区在线观看成人精品| 一区二区免费在线视频| 久久久久久夜精品精品免费| 在线综合亚洲欧美在线视频| 欧美激情亚洲自拍| 国产一区在线视频| 香蕉久久国产| 亚洲神马久久| 国产精品国产三级国产aⅴ入口 | 亚洲新中文字幕| 亚洲国产高清自拍| 久久久久久久尹人综合网亚洲| 国产区日韩欧美| 久久精精品视频| 亚洲欧美视频在线观看视频| 国产精品视频一二三| 先锋影音网一区二区| 亚洲午夜日本在线观看| 国产精品日产欧美久久久久| 欧美影院在线播放| 欧美一级专区免费大片| 黄色小说综合网站| 欧美成人午夜77777| 久久久久久久国产| 亚洲高清一二三区| 欧美激情精品久久久久| 欧美国产一区二区| 国产精品99久久久久久久久久久久| 亚洲精品欧美极品| 国产精品拍天天在线| 久久久噜噜噜久噜久久| 美女国产一区| 中文国产亚洲喷潮| 午夜一区二区三区在线观看| 激情综合五月天| 亚洲激情中文1区| 国产精品久久久久久久免费软件 | 亚洲综合三区| 国模精品娜娜一二三区| 欧美成年人视频| 欧美日韩三级| 久久精品国产欧美激情| 美女网站在线免费欧美精品| 亚洲一区二区三区精品在线| 久久精品国产一区二区三区| 亚洲精品视频免费观看| 先锋亚洲精品| 日韩视频中文| 久久爱www.| 中文日韩电影网站| 久久久99国产精品免费| 一区二区国产在线观看| 先锋影音网一区二区| 亚洲精品久久久久久久久久久久久 | 欧美亚洲在线视频| 亚洲国产成人久久综合一区| 亚洲精品孕妇| 狠狠综合久久av一区二区小说 | 欧美ab在线视频| 亚洲在线观看| 欧美成人免费网站| 欧美在线啊v| 欧美人与禽性xxxxx杂性| 久久亚洲私人国产精品va| 欧美日韩午夜| 欧美国产精品久久| 国产欧美精品一区aⅴ影院| 亚洲欧洲日夜超级视频| 国产一区二区三区在线观看免费视频 | 亚洲精品一区二区在线观看| 伊人婷婷久久| 西瓜成人精品人成网站| 这里只有精品丝袜| 欧美.www| 欧美国产丝袜视频| 伊人久久大香线蕉av超碰演员| 亚洲欧美成人综合| 亚洲一区区二区| 欧美区日韩区| 亚洲国产欧美一区二区三区久久| 黄色成人在线网址| 久久久久久久综合日本| 久久久久国产精品一区| 国产午夜精品理论片a级探花| 亚洲一区在线免费| 亚洲女爱视频在线| 国产精品乱码人人做人人爱| 一片黄亚洲嫩模| 亚洲在线中文字幕| 欧美午夜国产| 在线一区二区三区做爰视频网站| 一区二区三区蜜桃网| 欧美日韩国产亚洲一区| 日韩亚洲精品视频| 亚洲欧美激情精品一区二区| 国产精品久久午夜| 性欧美18~19sex高清播放| 久久精品视频免费观看| 一区二区三区自拍| 猫咪成人在线观看| 亚洲欧洲在线观看| 亚洲免费在线电影| 国产欧美一区二区精品婷婷| 欧美在线精品免播放器视频| 美日韩免费视频| 99国产精品久久久久老师| 欧美日韩一区二区三区在线视频| 亚洲天堂偷拍| 噜噜噜久久亚洲精品国产品小说| 亚洲黄色三级| 欧美日韩国产a| 亚洲欧美电影院| 亚洲高清成人| 亚洲第一精品久久忘忧草社区| 亚洲欧洲av一区二区| 久久久一区二区| 在线电影欧美日韩一区二区私密| 久久这里只有| 99国产精品久久久久久久成人热| 亚洲制服丝袜在线| 国产一区深夜福利| 欧美激情一区二区三区不卡| 在线亚洲一区观看| 美女主播一区| 一本色道久久88综合日韩精品| 国产精品视频xxx| 裸体一区二区| 亚洲综合电影一区二区三区| 欧美黄色aaaa| 西西人体一区二区| 亚洲日本va午夜在线电影| 国产精品伦子伦免费视频| 免费高清在线视频一区·| 亚洲一区二区三区四区中文 | 狂野欧美一区| 一区二区三区免费看| 欧美 日韩 国产一区二区在线视频| 一区二区欧美日韩视频| 激情懂色av一区av二区av| 欧美视频中文一区二区三区在线观看 | 欧美日韩国产一中文字不卡| 欧美一区日本一区韩国一区| 日韩午夜电影| 欧美成人有码| 久久人人97超碰精品888| 亚洲一区久久久| 亚洲精品久久久久中文字幕欢迎你| 国产美女搞久久| 欧美日韩美女在线| 欧美sm极限捆绑bd| 久久裸体视频| 久久国产主播精品| 小黄鸭精品aⅴ导航网站入口| av成人黄色| 亚洲美女91|