题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3839

题目大意:画脸。。每张脸是上一个脸倒过来加上眼睛。。

注意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[][]; void solve(int x,int y,int si,bool seq){
// printf("[solve]:x=%d,y=%d,si=%d\n",x,y,si);
if( si== ){
// return;
if( seq ){
for(int i=x;i<x+si;i++){
if( i==x||i==x+si-){
for(int j=y;j<y+si;j++){
s[i][j] = '*';
}
} else {
for(int j=y;j<y+si;j++){
if( (i>=x+&&i<=x+)&&(j<=y+||(j>=y+&&j<=y+)) ) s[i][j] = '*';
else if( i==x+&&(j==y||(j>=y+&&j<=y+)||j==y+) ) s[i][j] = '*';
else if( (i==x+||i==x+)&&(j==y||j==y+||j==y+||j==y+) ) s[i][j] = '*';
else s[i][j] = ' ';
}
}
}
} else {
for(int i=x;i>x-si;i--){
if( i==x||i==x-si+ ){
for(int j=y;j>y-si;j--){
s[i][j] = '*';
}
} else {
for(int j=y;j>y-si;j--){
if( (i<=x-&&i>=x-)&&(j>=y-||(j<=y-&&j>=y-)) ) s[i][j] = '*';
else if( i==x-&&(j==y||(j<=y-&&j>=y-)||j==y-) ) s[i][j] = '*';
else if( (i==x-||i==x-)&&(j==y||j==y-||j==y-||j==y-) ) s[i][j] = '*';
else s[i][j] = ' ';
}
}
}
}
return;
}
if( seq ){
for(int i=x;i<x+si;i++ ){
if( i==x||i==x+si- ){
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- ) s[i][j] = '*';
else if( (i==x+si/||i==x+si/+si/)&&((j>=y+si/&&j<=y+si/+si/-)||(j<=y+si-si/-&&j>=y+si-si/-si/)) ) {
s[i][j] = '*';
}
else if( (i>x+si/&&i<x+si/+si/)&&(j==y+si/||j==y+si/+si/-||j==y+si-si/-||j==y+si-si/-si/) ) s[i][j] = '*';
else s[i][j] = ' ';
}
}
}
solve(x+si-,y+si-si/-,si/,!seq);
} else {
for(int i=x;i>x-si;i-- ){
if( i==x||i==x-si+ ){
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+ ) s[i][j] = '*';
else if( (i==x-si/||i==x-si/-si/)&&((j<=y-si/&&j>=y-si/-si/+)||(j>=y-si+si/+&&j<=y-si+si/+si/)) ) {
s[i][j] = '*';
}
else if( (i<x-si/&&i>x-si/-si/)&&(j==y-si/||j==y-si/-si/+||j==y-si+si/+||j==y-si+si/+si/) ) s[i][j] = '*';
else s[i][j] = ' ';
}
}
}
solve(x-si+,y-si+si/+,si/,!seq);
}
} int n; int main(){
while( ~scanf("%d",&n) ){
if(n < )break;
solve(,,n,true);
for(int i=;i<n;i++){
s[i][n] = '\0';
//for(int j=0;j<n;j++){
printf("%s\n",s[i]);
// }
// puts("");
}
puts("");
}
// solve(31,31,32,false); return ;
}

[ZOJ 3839] Poker Face (递归)的更多相关文章

  1. ZOJ 1111 Poker Hands

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1111 A poker hand consists of 5 ca ...

  2. ZOJ 1111 Poker Hands --复杂模拟

    昨天晚上写的,写了一个多小时,9000+B,居然1A了,爽. 题意:玩扑克,比大小.规则如下: 题意很简单,看过赌神的人都知道,每人手中5张排,比牌面大小,牌面由大到小分别是(这里花色无大小),级别从 ...

  3. ZOJ Monthly, November 2014

    做了一次月赛,没想到这么难,加上后来补上的题目也只有3个题.第一名也只有4个题啊啊啊啊~.其中两道还是水题.留坑慢慢补上来. 3832 Tilt Cylinder 给定如图所示有盖圆柱体,R,H,水面 ...

  4. ZOJ 4063 - Tournament - [递归][2018 ACM-ICPC Asia Qingdao Regional Problem F]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4063 Input Output Sample Input 2 3 ...

  5. 九度OJ 1006:ZOJ问题 (递归)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:18621 解决:3197 题目描述: 对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC. 是否AC的规则如下: 1. ...

  6. ZOJ 3805 Machine(二叉树,递归)

    题意:一颗二叉树,求  “  宽度  ” 思路:递归,貌似这个思路是对的,先记下,但是提交时超时, 1.如果当前节点只有左孩子,那么当前宽度等于左孩子宽度 2.如果当前节点只有右孩子,那么当前宽度等于 ...

  7. zoj 3640 Help Me Escape (概率dp 递归求期望)

    题目链接 Help Me Escape Time Limit: 2 Seconds      Memory Limit: 32768 KB Background     If thou doest w ...

  8. 137 - ZOJ Monthly, November 2014 - J Poker Face

    Poker Face Time Limit: 2 Seconds      Memory Limit: 65536 KB As is known to all, coders are lack of ...

  9. zoj 1788 Quad Trees

    zoj 1788 先输入初始化MAP ,然后要根据MAP 建立一个四分树,自下而上建立,先建立完整的一棵树,然后根据四个相邻的格 值相同则进行合并,(这又是递归的伟大),逐次向上递归 四分树建立完后, ...

随机推荐

  1. Java的大数操作分为BigInteger和BigDecimal

    Java的大数操作分为BigInteger和BigDecimal,但这两给类是分开使用的,有时候在编程的时候显得略微繁琐,现在编写了一个将二者合二为一的大数操作类. 大数操作类代码如下: 1 pack ...

  2. JAVA获取时间戳,哪个更快

    目前获取毫秒值大概有下面三种方法 //方法 一 System.currentTimeMillis(); //方法 二 Calendar.getInstance().getTimeInMillis(); ...

  3. excel 组及分级显示制作教程

    1.思路:利用“组及分级显示”功能,将每一个项目作为“摘要行”,将需要被“收起”或“展开”的内容,也就是项目所包含的内容作为“明细数据行.2.制作方法: 方法1:使用手工“组合”例如下图中,A2代表的 ...

  4. mysqlbinlog快速遍历搜索记录 (转)

    目标,开发人员说有个数据莫名其妙添加了,但是不知道是从哪里添加的,而且应用功能里面不应该添加这样的数据,为了查清楚来源,所 以我就准备去binlog里面找了,但是binlog有好几个月的数,我这样一个 ...

  5. [web] 200 OK (from cache) 与 304 Not Modified

    为什么有的缓存是 200 OK (from cache),有的缓存是 304 Not Modified 呢?很简单,看运维是否移除了 Entity Tag.移除了,就总是 200 OK (from c ...

  6. 【svn】 SVN错误:Attempted to lock an already-locked dir

    出现这个问题后使用“清理”功能,如果还不行,就直接到上一级目录,再执行“清理”,然后再“更新”. 有时候如果看到某个包里面的文件夹没有SVN的标志,直接用“Ctrl+Delete”手工删除,然后“清理 ...

  7. PhoneGap 在 Android 上的插件开发方法介绍

    移动应用开发已经成为软件开发的一个重要方向,但是移动开发面临的一个重要问题就是跨平台的问题.PhoneGap 作为一个多平台的软件开发框架,提供了一次编写多个平台的运行.目前已经支持多达 6 个移动平 ...

  8. The word is not correctly spelled问题解决

    今天在做Ant/Xdoclet辅助生成hibernate实体映射文件时,eclipse出现了极其让我郁闷的错误,"The word is not correctly spelled" ...

  9. 腾讯首度公开S级手游品质管理方法

    weimjsam   引言 在最新的手游市场占有率统计中,腾讯游戏稳稳占据一半江山,目前仍以每月一到两款的速度推出新品,在如此复杂多变.响应要求极高的市场环境下,能持续推出高质量产品并保持高效迭代更新 ...

  10. [linux basic 基础]----同步互斥量

    互斥量,运行程序元锁住某个对象,使得每次只能有一个线程访问它:为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁它 :基本函数与用于信号量的函数非常相似#inclu ...