回型遍历
来源:互联网 发布:xp系统解压缩软件 编辑:程序博客网 时间:2024/05/29 04:29
暴力好写,直接可以70%的数据
但是满分的写法容易搞混,所以写了很久
如果是70%的数据的话,是一步一步的走过去,但是可以发现完全可以一次走一行(走一列),这样的话就可以得到100%的数据
m和n以及x和y容易搞混,混乱了两晚上。。
#include<cstdio>#include<iostream>using namespace std;int x,y,n,m,z,xx,t;int main(){ scanf("%d%d%d%d%d",&n,&m,&x,&y,&z); xx=min(x,min(n-x,min(y,m-y))); int w=n-2*(xx)-1,ww=m-2*xx-1; if(n-x==xx) { if(z>=m-xx-y-1) z-=m-xx-y-1;y+=m-xx-y-1; else y+=z,z=0; t=3; } if(y==xx){ if(z>=n-xx-x-1) { z-=n-xx-x-1; x+=n-xx-x-1; } else x+=z,z=0; t=2; } if(x==xx) { if(z>=y-xx-1) z-=y-xx-1;y-=y-xx-1;w--;ww-=2; else y-=z,z=0; t=1; } if(m-y==xx) { if(z>=x-xx) z-=x-xx;x-=x-xx;ww--;w-=2; else x-=z,z=0; t=0; } n--,m--; while(z){ if(t==0){ if(z-ww<=0){y-=z; break; } y-=ww;z-=ww; ww--;t=1; } else if(t==1){ if(z-w<=0){x+=z; break; } x+=w;z-=w; w--;t=2; } else if(t==2) { { y+=z; break; } y+=ww; z-=ww; ww--; t=3; } else if(t==3) { if(z-w<=0) { x-=z; break; } x-=w; z-=w; w--; t=0; } cout<<x<<' '<<y<<' '<<z<<' '<<w<<' '<<ww<<endl; } printf("%d %d",x,y);}
阅读全文
0 0
- 回型遍历
- 回型遍历
- 回型遍历(螺旋遍历)(js)
- 二维数组的回型遍历
- 回形遍历 calc
- 回形遍历
- 遍历
- 遍历
- 遍历
- 遍历
- 遍历
- 遍历
- 遍历
- 遍历
- 遍历
- 遍历
- 遍历
- 遍历
- Leetcode之Partition List 问题
- if __name__ == '__main__' 如何正确理解?
- 科技论文(1)
- matlab与c混合编程实现方法
- python版2048小游戏
- 回型遍历
- 是选择债券基金还是自己购买债券?
- HDU 1166 敌兵布阵 (线段树点更新区间查询)
- Java的web项目中使用cookie保存用户登陆信息
- equals ,hashCode 重写步骤的详解
- Java之多线程中java.util.concurrent.atomic包
- java多线程之volatile
- ANTLR教程(五)语法树节点间数据传递
- Bootstrap(一)基础小知识