钩题。。。
来源:互联网 发布:中国云计算行业分析 编辑:程序博客网 时间: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