poj1747Expression

来源:互联网 发布:身份证录入破译软件 编辑:程序博客网 时间:2024/06/05 18:05

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;}


0 0
原创粉丝点击