POJ 3318 Matrix Multiplication

来源:互联网 发布:快速排序javascript 编辑:程序博客网 时间:2024/05/20 18:00

题目大意:

给出矩阵a,b,c。验证a*b是否等于c。


解题思路:

三次方复杂度的算法, 正常情况下是过不了的。但是输入优化后可以过。


再有就是随机验证。

第二种没有啥意思,就记录一下输入优化好了~


下面是代码:

#include <set>#include <map>#include <queue>#include <math.h>#include <vector>#include <string>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>#define eps 1e-8#define pi acos(-1.0)#define inf 107374182#define inf64 1152921504606846976#define lc l,m,tr<<1#define rc m + 1,r,tr<<1|1#define iabs(x)  ((x) > 0 ? (x) : -(x))#define clear1(A, X, SIZE) memset(A, X, sizeof(A[0]) * (SIZE))#define clearall(A, X) memset(A, X, sizeof(A))#define memcopy1(A , X, SIZE) memcpy(A , X ,sizeof(X[0])*(SIZE))#define memcopyall(A, X) memcpy(A , X ,sizeof(X))#define max( x, y )  ( ((x) > (y)) ? (x) : (y) )#define min( x, y )  ( ((x) < (y)) ? (x) : (y) )using namespace std;int a[505][505],b[505][505],c[505][505];int read(){    int d=0;    char c,t=0;    while((c=getchar())==' '||c=='\n');    if(c=='-')        t=1;    else        d=c-'0';    while((c=getchar())>='0'&&c<='9')        d=d*10+c-'0';    if(t)        return -d;    else         return d;}int main(){    int n,t;    while(scanf("%d",&n)!=EOF)    {        bool flat=true;        for(int i=0; i<n; i++)        {            for(int j=0; j<n; j++)            {                a[i][j]=read();                //printf("%d ",a[i][j]);            }        }        for(int i=0; i<n; i++)        {            for(int j=0; j<n; j++)            {                b[i][j]=read();            }        }        for(int i=0; i<n; i++)        {            for(int j=0; j<n; j++)            {                c[i][j]=read();            }        }        for(int i=0; i<n&♭ i++)        {            for(int j=0; j<n&♭ j++)            {                t=0;                for(int k=0; k<n; k++)                {                    t+=a[i][k]*b[k][j];                }                if(t!=c[i][j])                {                    flat=false;                    break;                }            }        }        if(flat)puts("YES");        else puts("NO");    }    return 0;}


0 0
原创粉丝点击