[ZOJ 3839] Poker Face (递归)
2014-12-01 21:30
411 查看
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3839
题目大意:画脸。。每张脸是上一个脸倒过来加上眼睛。。
注意n<8时停止,被这个坑惨了- -以为是0停止。。
递归,然后去推坐标公式。。
题目大意:画脸。。每张脸是上一个脸倒过来加上眼睛。。
注意n<8时停止,被这个坑惨了- -以为是0停止。。
递归,然后去推坐标公式。。
#include <cstdio> #include <algorithm> #include <cstring> #include <vector> using namespace std; typedef long long LL; typedef pair<int,int> PII; typedef vector<int> vec; typedef vector<vec> mat; #define AA first #define BB second char s[2000][2000]; void solve(int x,int y,int si,bool seq){ // printf("[solve]:x=%d,y=%d,si=%d\n",x,y,si); if( si==8 ){ // return; if( seq ){ for(int i=x;i<x+si;i++){ if( i==x||i==x+si-1){ for(int j=y;j<y+si;j++){ s[i][j] = '*'; } } else { for(int j=y;j<y+si;j++){ if( (i>=x+1&&i<=x+3)&&(j<=y+2||(j>=y+5&&j<=y+7)) ) s[i][j] = '*'; else if( i==x+4&&(j==y||(j>=y+2&&j<=y+5)||j==y+7) ) s[i][j] = '*'; else if( (i==x+5||i==x+6)&&(j==y||j==y+7||j==y+2||j==y+5) ) s[i][j] = '*'; else s[i][j] = ' '; } } } } else { for(int i=x;i>x-si;i--){ if( i==x||i==x-si+1 ){ for(int j=y;j>y-si;j--){ s[i][j] = '*'; } } else { for(int j=y;j>y-si;j--){ if( (i<=x-1&&i>=x-3)&&(j>=y-2||(j<=y-5&&j>=y-7)) ) s[i][j] = '*'; else if( i==x-4&&(j==y||(j<=y-2&&j>=y-5)||j==y-7) ) s[i][j] = '*'; else if( (i==x-5||i==x-6)&&(j==y||j==y-7||j==y-2||j==y-5) ) s[i][j] = '*'; else s[i][j] = ' '; } } } } return; } if( seq ){ for(int i=x;i<x+si;i++ ){ if( i==x||i==x+si-1 ){ for(int j=y;j<y+si;j++){ s[i][j] = '*'; } } else { for(int j=y;j<y+si;j++){ if( j==y||j==y+si-1 ) s[i][j] = '*'; else if( (i==x+si/8||i==x+si/8+si/4)&&((j>=y+si/8&&j<=y+si/8+si/4-1)||(j<=y+si-si/8-1&&j>=y+si-si/8-si/4)) ) { s[i][j] = '*'; } else if( (i>x+si/8&&i<x+si/8+si/4)&&(j==y+si/8||j==y+si/8+si/4-1||j==y+si-si/8-1||j==y+si-si/8-si/4) ) s[i][j] = '*'; else s[i][j] = ' '; } } } solve(x+si-1,y+si-si/4-1,si/2,!seq); } else { for(int i=x;i>x-si;i-- ){ if( i==x||i==x-si+1 ){ for(int j=y;j>y-si;j--){ s[i][j] = '*'; } } else { for(int j=y;j>y-si;j--){ if( j==y||j==y-si+1 ) s[i][j] = '*'; else if( (i==x-si/8||i==x-si/8-si/4)&&((j<=y-si/8&&j>=y-si/8-si/4+1)||(j>=y-si+si/8+1&&j<=y-si+si/8+si/4)) ) { s[i][j] = '*'; } else if( (i<x-si/8&&i>x-si/8-si/4)&&(j==y-si/8||j==y-si/8-si/4+1||j==y-si+si/8+1||j==y-si+si/8+si/4) ) s[i][j] = '*'; else s[i][j] = ' '; } } } solve(x-si+1,y-si+si/4+1,si/2,!seq); } } int n; int main(){ while( ~scanf("%d",&n) ){ if(n < 8)break; solve(0,0,n,true); for(int i=0;i<n;i++){ s[i] = '\0'; //for(int j=0;j<n;j++){ printf("%s\n",s[i]); // } // puts(""); } puts(""); } // solve(31,31,32,false); return 0; }
相关文章推荐
- 1458 poj--zoj 1733---------------递归
- !ZOJ 2100--DFS(递归结束条件和回溯还是没理解好)
- zoj2100 Seeding (DFS递归+回溯)
- 九度OJ 1006:ZOJ问题 (递归)
- 九度OJ 1006:ZOJ问题 (递归)
- zoj 1855 Google Map 分型递归
- zoj 2587 (最小割是否唯一+dinic非递归模版)
- (转载)菜鸟拼杀ZOJ心得:[ZZ]递归深度优先搜索
- ZOJ1002 Fire Net(递归版)
- ZOJ 3965 Binary Tree Restoring (递归)
- ZOJ1002 Fire Net(递归版)
- ZOJ 3805 Machine(二叉树,递归)
- zoj 3839(ZOJ Monthly, November 2014)
- zoj 2314 Reactor Cooling--无源汇有上下界最大流--递归sap
- ZOJ 3805 Machine(二叉树,递归)
- zoj 1094 Matrix Chain Multiplication (好递归)
- zoj 3640 Help Me Escape (概率dp 递归求期望)
- ZOJ 2962 Stack By Stack(递归)
- zoj1002题解,递归枚举
- zoj 3229 Shoot the Bullet--有源汇 有上下界 最大流 递归和非递归sap