poj 1313 Booklet Printing 模拟水题

本文介绍了一个解决POJ1314问题的C++程序,该程序根据输入的页面总数,计算并输出正确的打印顺序。通过定义Page结构体来存储每一页的前后两面所对应的页面编号,利用循环结构实现对偶数页和奇数页的正确分配。
摘要由CSDN通过智能技术生成
//poj 1314
//sep9
#include <iostream>
using namespace std;
const int MAXN=128;
struct Page{
	int front1,front2;
	int back1,back2;
}pages[MAXN];
int n;
void print(int x)
{
	if(x>n) printf(" Blank");
	else printf(" %d",x);
}

int main()
{
    while(scanf("%d",&n)==1&&n){
		int num=n%4==0?n/4:n/4+1;
		printf("Printing order for %d pages:\n",n);
		int cnt=0;
		for(int i=0;i<num;++i){
			pages[i].front2=++cnt;
			pages[i].back1=++cnt;
		}
		for(int i=num-1;i>=0;--i){
			pages[i].back2=++cnt;
			pages[i].front1=++cnt;	
		}	
		for(int i=0;i<num;++i){
			printf("Sheet %d, front:",i+1);
			print(pages[i].front1);
			printf(",");
			print(pages[i].front2);
			puts("");
			if(pages[i].back1>n&&pages[i].back2>n)
				continue;
			printf("Sheet %d, back :",i+1);
			print(pages[i].back1);
			printf(",");
			print(pages[i].back2);
			puts("");
		}
    }	
	return 0;	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值