uvalive 7269
来源:互联网 发布:数控铣床简单编程实例 编辑:程序博客网 时间:2024/04/29 19:33
题意:将一块地板上铺满长度分别为1,2,3...n的蛇并且,奇数长度的蛇必须要有奇数个转折点,偶数长度的蛇必须要有偶数个转折点。求铺放方式,如果不能放,则输出0 0
思路:看了这个序列基本就懂了
1
1 2 2
1 3 2
3 3 2
1 3 2 4 4
3 3 2 4 4
1 3 5 2 2 6 6
3 3 5 4 4 6 6
5 5 5 4 4 6 6
1 3 5 7 2 4 4
3 3 5 7 2 4 4
5 5 5 7 6 6 6
7 7 7 7 6 6 6
看了这个基本就能懂了,不会有不可能的情况,偶数个都是转两次就可以了,只需要判断好偶数的放置方式就行了,有一个坑的地方就是,输出那些蛇的时候,那些点必须是连着的。。。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>using namespace std;const int maxn = 1010;struct node{ int x,y; node(int x,int y):x(x),y(y){}};vector<node> v[maxn];int main(){ int n; while(scanf("%d",&n)!=EOF) { for(int i = 1;i <= maxn;i++) v[i].clear(); for(int i = 1;i <= n;i+=2) { for(int j = 1;j*2-1 < i;j++) v[i].push_back(node((i+1)/2,j)); v[i].push_back(node((i+1)/2,(i+1)/2)); for(int j = (i+1)/2-1;j>=1;j--) v[i].push_back(node(j,(i+1)/2)); } int num = ((n-1)/2); if(num&1) { for(int i = 2;i <= n;i+=4) { for(int k = 1;k <= i/2;k++) v[i].push_back(node(i/2,k+(n+1)/2)); for(int k = i/2;k >=1;k--) v[i].push_back(node(i/2+1,k+(n+1)/2)); } for(int i = 4;i <= n;i+=4) { for(int k = 1;k <= i/2;k++) v[i].push_back(node(k,i/2+(n+1)/2)); for(int k = i/2;k >= 1;k--) v[i].push_back(node(k,i/2+1+(n+1)/2)); } } else { for(int i = 4;i <= n;i+=4) { for(int k = 1;k <= i/2;k++) v[i].push_back(node(i/2,k+(n+1)/2)); for(int k = i/2;k >=1;k--) v[i].push_back(node(i/2+1,k+(n+1)/2)); } for(int i = 2;i <= n;i+=4) { for(int k = 1;k <= i/2;k++) v[i].push_back(node(k,i/2+(n+1)/2)); for(int k = i/2;k >= 1;k--) v[i].push_back(node(k,i/2+1+(n+1)/2)); } } int all = n*(n+1)/2; int x = (n+1)/2; int y = all/x; printf("%d %d\n",x,y); for(int i = 1;i <= n;i++) { for(int j = 0;j < v[i].size();j++) { printf("%d %d%c",v[i][j].x,v[i][j].y,(j == v[i].size()-1)?'\n':' '); } } } return 0;}
0 0
- uvalive 7269
- UVALive-7267/UVALive-7261/UVALive-7269/UVALive-7263
- UVALive 7269 (构造)
- UValive 7269 (模拟)
- UVALive 7269 Snake Carpet
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- Junit4.X 套件测试
- 19个开发工具助你学Android开发
- thinkphp上传图片并jquery预览
- 屏幕图片OCR识别
- strnicmp函数
- uvalive 7269
- Java中String类的两种创建方式
- Android开发集成百度翻译SDK
- XP下ODBC安装
- Spark入门实战系列--6.SparkSQL(上)--SparkSQL简介
- Linux下source bash sh ./的区别
- Webervice学习总结
- mysql的锁机制
- Spark入门实战系列--6.SparkSQL(中)--深入了解SparkSQL运行计划及调优