http://poj.org/problem?id=1747
给出一个函数 要求找出各位的表示方法 判断是否能进位。
记*为n=k-1时的表达式,
则n=k时,表达式为
((An-1|Bn-1)|(*|((An-1|An-1)|(Bn-1|Bn-1))))。
递归函数的结构为:先输出*左边的部分,然后输出*,再输出*右边的部分。
边界条件为n=1,此时表达式为((A0|B0)|(A0|B0))。
#include <stdio.h>
void solve(int x)
{
if(x==1)
{
printf("((A0|B0)|(A0|B0))");
return ;
}
printf("((A%d|B%d)|(",x-1,x-1);
solve(x-1);
printf("|((A%d|A%d)|(B%d|B%d))))",x-1,x-1,x-1,x-1);
}
int main()
{
int n;
while(~scanf("%d",&n))
{
solve(n);
printf("\n");
}
return 0;
}