您的位置:首页 > 其它

poj1747Expression

2016-05-29 19:46 211 查看
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;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: