| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9074 人关注过本帖
标题:用1,2....9组成三个三位数abc,def,ghi,每个数字恰好使用一次,要求abc:def ...
只看楼主 加入收藏
liuting8181
Rank: 2
等 级:论坛游民
帖 子:54
专家分:19
注 册:2011-4-21
收藏
得分:0 
回复 9楼 thunder_2011
这个能求出来一些重复的数字组成的...不能满足 每个数只用一次的 原则...
2011-06-26 16:33
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
回复 8楼 liuting8181
程序代码:
int f(int i,int j,int k)
{int a[9];
a[0]=i%10;
a[1]=i/10%10;
a[2]=i/100;
a[3]=j%10;
a[4]=j/10%10;
a[5]=j/100;
a[6]=k%10;
a[7]=k/10%10;
a[8]=k/100;
for(i=0;i<9;i++)
for(j=i;j<9;j++)
if(a[i]>a[j])
{int t=a[i];
a[i]=a[j];
a[j]=t;}
for(i=0;i<9;i++)
if(a[i]!=i+1)
{return 0;
break;}
if(i>=9)
return 1;
}
main()
{int i,j,k;
for(i=100;i<1000;i++)
for(j=100;j<1000;j++)
for(k=100;k<1000;k++)
if(6*i==3*j&&3*j==2*k&&f(i,j,k))
printf("%5d%5d%5d\n",i,j,k);
getch();}

没考虑效率问题
2011-06-26 16:34
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
收藏
得分:1 
这也是一种思路~~~
#include "stdio.h"
int fun(int n)
{
 int a,b,c;
 a=n/100;
 b=n%100/10;
 c=n%10;
 
 if(a!=b&&a!=c&&b!=c)
     return n;
 else return 0;

}
main()
{
 int m;
 for(m=111;m<333;m++)
 {
  if(fun(m)&&fun(2*m)&&fun(3*m))
    printf("%d %d %d\n",m,2*m,3*m);
  else continue;
 }
return 0;
}
2011-06-26 16:59
baoqger
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2011-6-24
收藏
得分:3 
#include "Stdio.h"
#include "Conio.h"

int main(void)
{
   int i,j,k;/*loop variables*/
  int m; /*the basic 3 bits integrates*/
  int compare(int,int);
  for(i=1;i<=3;i++)
  {
     for(j=1;j<=9;j++)
       {
         if(i==j)
         continue;
         else
          {
            for(k=1;k<=9;k++)
              {
                 if(k==i||k==j)
                 continue;
                 else
                   {
                     m=100*i+10*j+k;
                     if(m<=333)
                      {
                        if(compare(m,2*m)&&compare(m,3*m)&&compare(2*m,3*m))
                        printf("%d %d %d\n",m,2*m,3*m);
                      }/*make a range for m(no bigger than 333)*/



                   }/*the third bit are not same as the first and second*/
              }/*the third bit*/
          }/*the first and second bit are not same*/
       }/*the second bit*/
  }/*the first bit*/
  getch();
  return 0;
}

int compare(int y,int z)

{
 int multm[2][3];/*three 3 bits integrates*/
 int x,w;
 int n=100;
 int flag;

for(x=0;x<=2;x++)
  {
   multm[0][x]=y/n;
   multm[1][x]=z/n;
   y=y%n;
   z=z%n;
   n/=10;
  } /*get the three bit of m and 2m and 3m while putting them in the multm[][] 2D number array*/

for(x=0;x<=2;x++)
  {
    for(w=0;w<=2;w++)
      {
       if(multm[0][x]==multm[1][w]||multm[0][x]==0||multm[1][w]==0)/*2m and 3m may have 0 as bit*/
         {
         flag=0;
         break;
         }/*if there are bits same then jump out loop*/
       else
         flag=1;
      }/*judge two integrates bits same or not step1*/
    if(flag==0)
    break;
    else
    continue;
  }/*judge two integrates's bits same or not step2*/
if(flag==0)
return 0;
else
return 1;
}/*function compare*/
2011-06-26 17:41
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:5 
回复 10楼 huwengui
有错误,第二行数据不对
2011-06-26 18:24
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
回复 13楼 huwengui
这不是楼主想要的结果吧
2011-06-26 18:25
thunder_2011
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:100
注 册:2011-4-11
收藏
得分:0 
以下是引用liuting8181在2011-6-26 16:33:19的发言:

这个能求出来一些重复的数字组成的...不能满足 每个数只用一次的 原则...



你真不动脑子,判断重复不就行了?

程序代码:
  1 #include <stdio.h>
  2 
  3 int main(void)
  4 {
  5     int i = 0, j = 0, k = 0, num = 0;
  6 
  7     for (i = 1; i < 10; i++)
  8     {
  9         for (j = 1; j < 10; j++)

 10         {

 11             if (j == i)

 12                 continue;

 13 

 14             for (k = 1; k < 10; k++)

 15             {

 16                 if (k == i || k == j)

 17                     continue;

 18 

 19                 num = i * 100 + j * 10 + k;

 20 

 21                 if (num * 3 <= 999)

 22                     printf("%d:%d:%d = 1:2:3\n", num, num*2, num*3);

 23             }

 24         }

 25     }

 26 

 27     return 0;

 28 }



当然程序还可以再优化,因为所要的数不可能超过333的,所以最外层循环实际上到1--3就可以了
2011-06-26 21:16
liuting8181
Rank: 2
等 级:论坛游民
帖 子:54
专家分:19
注 册:2011-4-21
收藏
得分:0 
回复 10楼 huwengui
这个也太复杂了吧...跟我之前写的也差不多了..我想求简单点的...
2011-06-26 21:30
thunder_2011
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:100
注 册:2011-4-11
收藏
得分:0 
以下是引用liuting8181在2011-6-26 21:30:18的发言:

这个也太复杂了吧...跟我之前写的也差不多了..我想求简单点的...



恩,是挺笨的
2011-06-26 22:02
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
收藏
得分:0 
回复 15楼 hjywyj
少写了一行    改好了
2011-06-26 23:05
快速回复:用1,2....9组成三个三位数abc,def,ghi,每个数字恰好使用一次,要求ab ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040564 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved