概述
传送门
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页)
下面是我的代码,分类来做的,比较弱的代码,结尾有一个思路清晰的代码的链接。
#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 1117 Booklet Printing(模拟 分类 水题)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复