钩题。。。

来源:互联网 发布:中国云计算行业分析 编辑:程序博客网 时间:2024/06/06 17:07

那啥。。。。机器人走在边界上的时候不知道怎么办了。

那种1A的人好讨厌。。。!

*******************************

我是傻叉吗??为什么模拟题我可以暴力成这个样子??温柔点不好吗???。。。。。

然后发现debug的时候一定要把思路带进去,不要急躁急躁。。。。

我擦、、、摔!。。。。改了半个小时发现是自己出的样例错了!再摔!

#include <stdio.h>#include <string.h>#define maxn 610int x[maxn][maxn],y[maxn][maxn],mapp[maxn][maxn];int a[maxn],b[maxn],c[maxn],d[maxn];int max(int x,int y){    if(x>y) return x;    else return y;}int main(){    int n,m,l;    while(scanf("%d%d",&n,&m)!=EOF&&n+m)    {        memset(mapp,0,sizeof(mapp));        memset(x,0,sizeof(x));        memset(y,0,sizeof(y));        int i,j,k;        int st,en;        int sum=0;        l=0;        for(i=1;i<=n;i++)        {            scanf("%d%d",&a[i],&b[i]);            l=max(l,max(a[i],b[i]));            if(i>1)            {                if(a[i]!=a[i-1])                {                    st=a[i]>a[i-1]?a[i-1]:a[i];                    en=a[i]>a[i-1]?a[i]:a[i-1];                    for(j=st+1;j<=en;j++)                        y[b[i]][j]=1;                }                else                {                    st=b[i]>b[i-1]?b[i-1]:b[i];                    en=b[i]>b[i-1]?b[i]:b[i-1];                    for(j=st+1;j<=en;j++)                        x[a[i]][j]=1;                }            }        }        if(a[1]!=a[n])        {            st=a[1]>a[n]?a[n]:a[1];            en=a[1]>a[n]?a[1]:a[n];            for(j=st+1;j<=en;j++)                y[b[1]][j]=1;        }        else        {            st=b[1]>b[n]?b[n]:b[1];            en=b[1]>b[n]?b[1]:b[n];            for(j=st+1;j<=en;j++)                x[a[1]][j]=1;        }        for(i=0;i<=l;i++)        {            int flag=0;            for(j=0;j<=l;j++)            {                if(x[j][i]&&!flag) {x[j][i]=1;flag=1;continue;}                if(x[j][i]&&flag) {x[j][i]=2;flag=0;continue;}            }        }        for(i=0;i<=l;i++)        {            int flag=0;            for(j=0;j<=l;j++)            {                if(y[j][i]&&!flag) {y[j][i]=1;flag=1;continue;}                if(y[j][i]&&flag) {y[j][i]=2;flag=0;continue;}            }        }        for(i=1;i<=m;i++)        {            scanf("%d%d",&c[i],&d[i]);            if(i>1)            {                if(c[i]!=c[i-1])                {                    st=c[i]>c[i-1]?c[i-1]:c[i];                    en=c[i]>c[i-1]?c[i]:c[i-1];                    for(j=st+1;j<=en;j++)                    {                        if(y[d[i]][j]==0)                        {                            k=d[i];                            while(y[k][j]==0)                                mapp[j][++k]=1;                            k=d[i];                            while(y[k-1][j]==0)                                mapp[j][k--]=1;                            mapp[j][k]=1;                        }                        else                        {                            if(y[d[i]][j]==1)                            {                                k=d[i]+1;                                while(y[k][j]==0)                                    mapp[j][k++]=1;                                mapp[j][k++]=1;                            }                            if(y[d[i]][j]==2)                            {                                k=d[i]-1;                                mapp[j][d[i]]=1;                                while(y[k][j]==0)                                    mapp[j][k--]=1;                                mapp[j][k+1]=1;                            }                        }                    }                }                else                {                    st=d[i]>d[i-1]?d[i-1]:d[i];                    en=d[i]>d[i-1]?d[i]:d[i-1];                    for(j=st+1;j<=en;j++)                    {                        if(x[c[i]][j]==0)                        {                            k=c[i];                            while(x[k][j]==0)                                mapp[k--][j]=1;                            k=c[i]+1;                            while(x[k][j]==0)                                mapp[k++][j]=1;                            mapp[k][j]=1;                        }                        else                        {                            if(x[c[i]][j]==1)                            {                                k=c[i]+1;                                while(x[k][j]==0)                                    mapp[k++][j]=1;                                mapp[k][j]=1;                            }                            if(x[c[i]][j]==2)                            {                                k=c[i]-1;                                mapp[c[i]][j]=1;                                while(x[k][j]==0)                                    mapp[k--][j]=1;                            }                        }                    }                }            }        }        for(i=0;i<=l;i++)            for(j=0;j<=l;j++)            if(mapp[i][j]) sum++;     //   for(i=0;i<=l;i++){for(j=0;j<=l;j++) printf("%d ",mapp[i][j]); printf("\n");}        printf("%d\n",sum);    }    return 0;}/*20 40 21 21 12 12 23 23 04 04 35 35 44 44 53 53 62 62 51 51 30 31 31 52 52 6*/



0 0
原创粉丝点击