三羊献瑞 蓝桥杯 C语言,递归

/*
观察下面的加法算式:
祥瑞生辉
+  三羊献瑞
----------------
 三羊生瑞气
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你编程输出“三羊献瑞”所代表的4位数字(答案唯一)。
*/ 
#if 1
#include <stdio.h>


void xuanze(int [],int,int);
int byy(int [],int);
int q_qs(int);
int q_shu( int [], int );


int main(void)
{
int sz[8];
xuanze(sz,8,0);
return 0;
}


int q_qs(int k)
{
if( k == 0 || k == 4 )
{
return 1;
}
return 0;
}


int q_shu( int z[], int n)
{
int he = 0 , i ;
for( i = 0 ; i < n ; i ++ )
{
he *= 10 ;
he += z[i];
}
return he ;
}


int byy(int z[],int k)
{
int i ;
for( i = 0 ; i < k ; i ++ )
{
if( z[i] == z[k] )
{
return 0;

}
return 1;
}


void xuanze(int z[],int n,int k)
{
if( k == n )
{
int shu1[4] = { z[0] , z[1] , z[2] , z[3] };
int shu2[4] = { z[4] , z[5] , z[6] , z[1] };
int shu3[5] = { z[4] , z[5] , z[2] , z[1] , z[7] };
if( (q_shu(shu1,4) + q_shu(shu2,4)) ==  q_shu(shu3,5) )
{
printf("%d\n", q_shu(shu2,4) ) ;
}
//return;
}
for( z[k] = q_qs(k) ; z[k] < 10 ; z[k] ++ )
{
if( byy(z,k) )
{
xuanze(z,n,k+1);
}
}
}
#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值