这道C语言题目该怎么做?
用C语言编写,输出所有这样的3个数。要看清题目哦,123456789不能重复使用。比如a=356,b=197,c=841.a=b+c;b=c+c;只是随便举得一个例子。我...
用C语言编写,输出所有这样的3个数。
要看清题目哦,123456789不能重复使用。
比如a=356,b=197,c=841.
a=b+c; b=c+c;
只是随便举得一个例子。
我要代码。
我写了一个有注释的. 展开
要看清题目哦,123456789不能重复使用。
比如a=356,b=197,c=841.
a=b+c; b=c+c;
只是随便举得一个例子。
我要代码。
我写了一个有注释的. 展开
4个回答
展开全部
#include<stdio.h>
int main()
{
int n,i,j,k,a[10]={0};
for(i=102;i<333;i++)
{
j=2*i;
k=i+j;
a[i%10]=1;
a[(i/10)%10]=1;
a[i/100]=1;
a[j%10]=1;
a[(j/10)%10]=1;
a[j/100]=1;
a[k%10]=1;
a[(k/10)%10]=1;
a[k/100]=1;
for(n=1;n<10&&a[n]==1;++n);
if(n==10)
printf("a=%d b=%d c=%d\n",i,j,k);
for(n=1;n<10;++n)
a[n]=0;
}
return 0;
}
int main()
{
int n,i,j,k,a[10]={0};
for(i=102;i<333;i++)
{
j=2*i;
k=i+j;
a[i%10]=1;
a[(i/10)%10]=1;
a[i/100]=1;
a[j%10]=1;
a[(j/10)%10]=1;
a[j/100]=1;
a[k%10]=1;
a[(k/10)%10]=1;
a[k/100]=1;
for(n=1;n<10&&a[n]==1;++n);
if(n==10)
printf("a=%d b=%d c=%d\n",i,j,k);
for(n=1;n<10;++n)
a[n]=0;
}
return 0;
}
展开全部
#include<stdio.h>
int ans[9],use[9]={0};
void dfs(int n){
int i,a,b,c;
if(n==9){
a=ans[0]*100+ans[1]*10+ans[2];
b=ans[3]*100+ans[4]*10+ans[5];
c=ans[6]*100+ans[7]*10+ans[8];
if(a==b+c&&b==c*2)printf("%d %d %d\n",a,b,c);}
else {
for(i=0;i<9;i++)
if(!use[i]){
use[i]=1;
ans[n]=i+1;
dfs(n+1);
use[i]=0;}}
return;}
int main(){
dfs(0);
return 0;}
int ans[9],use[9]={0};
void dfs(int n){
int i,a,b,c;
if(n==9){
a=ans[0]*100+ans[1]*10+ans[2];
b=ans[3]*100+ans[4]*10+ans[5];
c=ans[6]*100+ans[7]*10+ans[8];
if(a==b+c&&b==c*2)printf("%d %d %d\n",a,b,c);}
else {
for(i=0;i<9;i++)
if(!use[i]){
use[i]=1;
ans[n]=i+1;
dfs(n+1);
use[i]=0;}}
return;}
int main(){
dfs(0);
return 0;}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a = 576, b = 384, c = 192
a = 657, b = 438, c = 219
a = 819, b = 546, c = 273
a = 981, b = 654, c = 327
代码
#include <stdio.h>
#include <string.h>
int dfs(int index, int counts, int a[3], int used[10]) {
if (counts == 3) {
return dfs(index + 1, 0, a, used);
}
int i;
if (index == 3) {
if (a[0] == a[1] + a[2] && a[1] == a[2] * 2) {
printf("a = %d, b = %d, c = %d\n", a[0], a[1], a[2]);
}
return 0;
}
a[index] *= 10;
for (i = 1; i <= 9; i++) {
if (used[i] == 1) continue;
used[i] = 1;
a[index] += i;
dfs(index, counts + 1, a, used);
a[index] -= i;
used[i] = 0;
}
a[index] /= 10;
return 0;
}
int main() {
int used[10];
int a[3];
memset(used, 0, sizeof(used));
memset(a, 0, sizeof(a));
dfs(0, 0, a, used);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-02-15
展开全部
直接打的,没考虑效率,凑合了吧
重复代码的问题自己解决了吧
#include <stdio.h>
void main()
{
int a,b,c,ct;
int i,flag;
int buf[10];
for(c = 0;c < 999;c++)
{
flag = 0;
b = 2*c;
a = b+c;
ct = c;
for(i = 0;i < 10;i++)
buf[i] = 0;
while(ct > 0)
{
if(buf[ct%10])
{
flag = 1;
break;
}
buf[ct%10]++;
ct/=10;
}
while(a > 0)
{
if(buf[a%10])
{
flag = 1;
break;
}
buf[a%10]++;
a/=10;
}
while(b > 0)
{
if(buf[b%10])
{
flag = 1;
break;
}
buf[b%10]++;
b/=10;
}
if(!flag)
printf("%d %d %d\n",3*c,2*c,c);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询