题意:给打印的纸张进行编号,想想咱们的书就知道了
我看了他们的代码,感觉挺简单的,挺省内存的,我自己感觉我的代码更好理解,所以还是分享一下吧。
#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int n;
int m;
struct Paper
{
int rightup,rightdown;
int leftup,leftdown;
}paper[30];
void solve()
{
int i;
m = ceil(n/4.0);
int s = 1;
for(i = 1;i <= 2*m;i = i+2)
{
if(i <= n)
paper[s].rightup = i;
if(i + 1 <= n)
paper[s].rightdown = i+1;
s++;
}
s--;
for(;i <= n;i = i+2)
{
paper[s].leftdown = i;
if(i + 1 <= n)
paper[s].leftup = i+1;
s--;
}
/*
for(i = 1;i <= m;i++)
cout<<paper[i].rightup<<" "<<paper[i].rightdown<<" ";
cout<<endl;
i--;
for(;i >= 1;i--)
cout<<paper[i].leftdown<<" "<<paper[i].leftup<<" ";
*/
}
void output()
{
int i ;
cout<<"Printing order for "<<n<<" pages:"<<endl;
for(i = 1;i <= m;i++)
{
cout<<"Sheet "<<i<<", front: ";
if(paper[i].leftup == 0)
cout<<"Blank";
else
cout<<paper[i].leftup;
cout<<", ";
if(paper[i].rightup == 0)
cout<<"Blank";
else
cout<<paper[i].rightup;
cout<<endl;
if(paper[i].rightdown == 0 && paper[i].leftdown == 0)
continue;
cout<<"Sheet "<<i<<", back : ";
if(paper[i].rightdown == 0)
cout<<"Blank";
else
cout<<paper[i].rightdown;
cout<<", ";
if(paper[i].leftdown == 0)
cout<<"Blank";
else
cout<<paper[i].leftdown;
cout<<endl;
}
}
int main()
{
while(cin>>n && n)
{
memset(paper,0,sizeof(paper));
solve();
output();
}
return 0;
}