| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 654 人关注过本帖
标题:谁能给我一个更加简单的?
只看楼主 加入收藏
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
结帖率:62.5%
收藏
已结贴  问题点数:20 回复次数:7 
谁能给我一个更加简单的?
上次居然有人说我是来求作业的

感到特别的郁闷

所以这次我特别的把自己编的也一起发上来了,虽然我编的不是很好,但是至少证明我不是求作业的

这个程序是,1,2,3,4是个数组成一个三位数。问,能组成多个三位数,以及组成的这些数是多少。(我觉得我编写的太复杂了,求一个简单明了的,另外,如果有可能就在我编写的上面改吧)

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a[4]={1,2,3,4};
    int i,j,k,m=1,n;
    for(i=0;i<=3;i++)
    {
        for(j=0;j<=3;j++)
        {
            if(j!=i)
            {
                for(k=0;k<=3;k++)
                {
                    if(k!=i&&k!=j)
                    {
                        printf("%d",a[i]);
                        printf("%d",a[j]);
                        printf("%d  ",a[k]);
                        m++;
                    }
                }
               
            }
        
        }
        printf("\n");
    }
    printf("\n\n\n");
    n=m-1;
    printf("%d",n);
                           
}
搜索更多相关主题的帖子: include choice 
2011-11-01 15:09
云蕾
Rank: 2
等 级:论坛游民
帖 子:12
专家分:26
注 册:2011-10-28
收藏
得分:9 
lz劝你不要陷入误区:并不是程序越短越好!也不是算法越高明月好,关键是要便于理解!
不要为了能够提高一点点效率而写出一些很高深的的算法!
那样维护你的代码的人会骂娘的!
收到的鲜花
  • TonyDeng2011-11-01 17:12 送鲜花  10朵   附言:我很赞同
  • claughing2011-11-01 22:16 送鲜花  1朵   附言:我很赞同
2011-11-01 16:58
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:0 
干吗加下划线,看得我两眼冒星星
2011-11-01 17:19
苦僧
Rank: 1
等 级:新手上路
帖 子:3
专家分:8
注 册:2011-10-28
收藏
得分:6 
看看我这个程序改了下你的 看对不对
#include "stdio.h"
typedef int TYPE_INT;
void main()
{
   TYPE_INT i,j,m,n,sum=0;
   TYPE_INT a[4]={1,2,3,4};
   for(i=0;i<4;i++)
   {
           for(j=0;j<4;j++)
           {
               for(m=0;m<4;m++)
               {
                   n=100*a[i]+10*a[j]+a[m];
                   printf("%d   ",n);
                   sum++;
               }   
               printf("\n");
           }
   }
   printf("一共有%d个三位数",sum);
   getch();
}

2011-11-01 17:35
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
收藏
得分:0 
回复 4楼 苦僧
你的回答是对的

但是我忘记说了

是要组成一个没有重复数字的三位数的。

所以我才加了if(i!=j)这些的

不说还是挺谢谢你的
2011-11-01 18:08
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
楼主是要求全排列吧

                                         
===========深入<----------------->浅出============
2011-11-01 18:27
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:5 
先全排列。在选择就行了。
程序代码:
#include "stdio.h"
void main()
{
  int i,j,k,sum=0;
  for(k=1;k<=4;k++)
  for(j=1;j<=4;j++)
  for(i=1;i<=4;i++)
  {
    if(i!=j&&i!=k&&j!=k)
    {printf("%d%d%d\n",i,j,k);
     sum++;
    }
  }
  printf("总个数是:%d",sum);
}
加油 我也刚学习的.

能力 技巧
2011-11-01 21:15
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
4取3的排列,总数只有24个。就算在允许重复的情况下也不过64个,这时相当一个3位的4进制数。
这么小的规模就不写排列的代码了,给你来个暴力的。
程序代码:
#include<stdio.h>
int main()
{
    int i, a, b, c;
    for(i = 0; i < 64; i++)
    {
        a = i & 3;
        b = (i >> 2) & 3;
        c = (i >> 4) & 3;
        if(a == b || a == c || b == c)
            continue;
        else
            printf("%d %d %d\n", c + 1, b + 1, a + 1);
    }
    return 0;
}

重剑无锋,大巧不工
2011-11-01 21:44
快速回复:谁能给我一个更加简单的?
数据加载中...
 
   



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

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