nefu003模拟

来源:互联网 发布:淘宝是网站吗 编辑:程序博客网 时间:2024/06/06 05:31

题意,问矩阵存不存在一个子矩阵满足子矩阵内所有元素的和等于某值
n只有50,但直接暴力肯定也不行,考虑构造一个矩阵b表示他左上方的矩阵的值,这样用b就可以表示出所有的子矩阵了

#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;long long a[55][55];int main(){    int n,m,sum,x,flag;    while(~scanf("%d%d",&n,&m))    {        for(int i=1; i<=n; i++)            for(int j=1; j<=n; j++)            {                scanf("%d",&x);                a[i][j]=x+a[i-1][j]+a[i][j-1]-a[i-1][j-1];            }//        for(int i=1; i<=n; i++)//        {//            for(int j=1; j<=n; j++)//                cout<<a[i][j]<<" ";//            cout<<endl;//        }        flag=1;        for(int i=1; i<=n; i++)        {            for(int j=1; j<=n; j++)            {                for(int k=1; k<=i; k++)                {                    for(int l=1; l<=j; l++)                    {                        sum=a[i][j]+a[i-k][j-l]-a[i][j-l]-a[i-k][j];                        //cout<<sum<<endl;                        if(sum==m)                        {                            flag=0;                            break;                        }                    }                    if(flag==0)                         break;                }            }            if(flag==0)                break;        }        if(flag==0)            printf("yes\n");        else            printf("no\n");    }    return 0;}
0 0
原创粉丝点击