我是靠谱客的博主 腼腆雪糕,这篇文章主要介绍hdu 1117 Booklet Printing(模拟 分类 水题),现在分享给大家,希望可以做个参考。

传送门

http://acm.hdu.edu.cn/showproblem.php?pid=1117


首先上图,

这表示三张纸订正一本册子的姿势,是一张夹着一张的,明白了这个,就可以水过去了。

这里第一面是12,1

第二面是2,11

第三面(第二张纸)是10,3

......这其实是打印纸张时打印的顺序。


当页码是1的时候,只用输出第一面就行了,情况为  Blank,1(第二面是空白的不用输)

当页码是2的时候,输出的应该是

Blank,1

2,Blank(其实把这个填到最上面的那个图里就能理解了,12和11换成Blank,符合我们翻书的规则)

然后当页码为5的时候,它是这样的:

Blank, 1
2, Blank
Blank, 3
4, 5(为什么是这样,同理,填进去就知道了,你也可以把你自己认为对的填进去检查下)

页码为7的时候是这样的:

Blank, 1
2, 7
6, 3
4, 5

......总之,你打印一页的内容,至少要耗费一张纸(4页)

下面是我的代码,分类来做的,比较弱的代码,结尾有一个思路清晰的代码的链接。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include<cstdio> #include<iostream> using namespace std; int data[105]; int main() { int n,num,i,ant; while(cin>>num,num!=0) { // cin>>num; for(i=1;i<=num;i++) data[i]=i; ant=1; printf("Printing order for %d pages:n",num); if(num%2!=0)//奇数 { int left=2;//第一组情况特殊,总是单独处理,所以左边界从2开始 int right=num; if(num>1)// { if((num+1)/2%2!=0)//5,9,13... 奇数为前面这些数的时候,单独处理,保证页数 { printf("Sheet 1, front: Blank, 1n"); printf("Sheet 1, back : 2, Blankn"); printf("Sheet 2, front: Blank, 3n"); left=4; right=num; printf("Sheet 2, back : %d, %dn",data[left++],data[right--]); ant+=2; } } while(left<right||ant==1)//这里可以顺便处理下只有1页的特殊情况 { if(ant==1) printf("Sheet %d, front: Blank, %dn",ant,1); else printf("Sheet %d, front: %d, %dn",ant,data[right--],data[left++]); if(left<right)//甄别普通情况和只有1页的情况 printf("Sheet %d, back : %d, %dn",ant,data[left++],data[right--]); ant++; } } else//偶数 { int left=1; int right=num; if(num/2%2!=0)//2,6,10... { printf("Sheet %d, front: Blank, %dn",ant,1); printf("Sheet %d, back : %d, Blankn",ant,2); left=3; } else//4,8,12... { printf("Sheet %d, front: %d, %dn",ant,data[right--],data[left++]); printf("Sheet %d, back : %d, %dn",ant,data[left++],data[right--]); } ant++; while(left<right) { printf("Sheet %d, front: %d, %dn",ant,data[right--],data[left++]); printf("Sheet %d, back : %d, %dn",ant,data[left++],data[right--]); ant++; } } } return 0; }


http://www.cnblogs.com/dramstadt/archive/2013/08/15/3260652.html




最后

以上就是腼腆雪糕最近收集整理的关于hdu 1117 Booklet Printing(模拟 分类 水题)的全部内容,更多相关hdu内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部