Uva-10795-A Different Task

来源:互联网 发布:宁波江东行知实验小学 编辑:程序博客网 时间:2024/04/30 23:52

汉诺塔类似问题。

代码:

#include<cstdio>#include<cstring>#define MAX 101int a[MAX],b[MAX];long long f(int *p,int i,int final){    if(i==0) return 0;    if(p[i]==final) return f(p,i-1,final);    return f(p,i-1,6-p[i]-final)+(1LL<<(i-1));}int main(){    int n,cas=1;    while(scanf("%d",&n)&&n)    {for(int i=1;i<=n;i++)    scanf("%d",&a[i]);for(int i=1;i<=n;i++)    scanf("%d",&b[i]);int j=n;while(j>=1&&a[j]==b[j])    j--;long long ans=0;if(j>=1){    ans=f(a,j-1,6-a[j]-b[j])+f(b,j-1,6-a[j]-b[j])+1;}printf("Case %d: %lld\n",cas++,ans);    }    return 0;}


原创粉丝点击