鱼C论坛

 找回密码
 立即注册
查看: 11204|回复: 175

[每日一练] 算法1 ◉‿◉ {1,2,3,4}能组成多少个互不相同且无重复的三位数字?

  [复制链接]
发表于 2017-5-5 22:51:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2017-5-9 07:26 编辑

628e07ef36cc6382039eb184f606d547.png

按照提示,完成代码,秀秀你的编程能力!

不许看答案,否则打屁屁





程序分析:
可填在百位、十位、个位的数字都是 1 、 2 、 3 、 4 。

组成所有的排列后再去掉不满足条件的排列。





源代码:
游客,如果您要查看本帖隐藏内容请回复

效果图:
Snip20170505_12.png






如果喜欢,请订阅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-5 23:00:20 | 显示全部楼层
我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-6 11:56:33 | 显示全部楼层
最笨的办法就 一个个 迭代出来  ,然后去重复   看看 老哥您有什么好算法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-15 10:02:05 | 显示全部楼层
本帖最后由 shishunfu 于 2017-5-15 10:11 编辑

等我先去熟悉下js语法规则再来


先交一段java代码
public static void main(String[] args) {
                int count = 0;
                for (int a = 1; a <= 4; a++) {
                        for (int b = 1; b <= 4; b++) {
                                for (int c = 1; c <= 4; c++) {
                                        if (a != b && a != c && b != c) {
                                                System.out.print(a + "" + b + "" + c+"\t");
                                                count++;
                                                if (count >= 5 && count % 5 == 0) {
                                                        System.out.println();
                                                }
                                        }
                                }
                        }
                }
                System.out.println("符合规则的数据共有:"+count);
        }
test.png

点评

我很赞同!: 5.0
我很赞同!: 5
不限制语言!  发表于 2017-5-15 10:45

评分

参与人数 1鱼币 +6 收起 理由
不二如是 + 6 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-29 21:47:05 | 显示全部楼层
#include "stdafx.h"
#include <iostream>

using namespace std;

const int MAX = 4;

int main()
{
         int count = 0;
         for (int i = 1; i <= MAX; i++)
         {
                  for (int j = 1; j <= MAX; j++)
                  {
                           if (i == j)
                                        continue;
                           for (int k = 1; k <= MAX; k++)
                           {
                                        if (i == k || j == k)
                                                 continue;                
                                        cout << i << j << k << " ";
                                        count++;
                                        if (count % 5 == 0)
                                                 cout << endl;
                           }
                  }
         }
         cout << endl;
     return 0;
}

嗯...最近学了点点c++..那就用上一点吧..
2.png

点评

我很赞同!: 5.0
我很赞同!: 5
  发表于 2017-7-29 22:14

评分

参与人数 1鱼币 +6 收起 理由
不二如是 + 6 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-7 13:59:41 | 显示全部楼层
真的很不错哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-7 14:31:55 | 显示全部楼层
用python的方法写了个答案
temp = []
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i == j or j == k or i == k:
                pass
            else:
                temp.append(str(i)+str(j)+str(k))
            
print(temp)
print('共'+ str(len(temp)) +'种排列')


                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-7 23:45:52 | 显示全部楼层
我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-12 19:26:00 | 显示全部楼层
c++递归强答
#include <cstdio>
using namespace std;

int s = 0;
int a[3] = {0,0,0};

bool in(int n)
{
        for (int i = 0; i < 3; ++i)
        {
                if(a[i] == n)
                        return true;
        }
        return false;
}

void work(int step)
{
        if(step >= 3)
        {
                if(s>0 && s % 5 == 0)
                        printf("\n");
                printf("%d%d%d ", a[0],a[1],a[2]);
                s++;
                return;
        }
        for (int i = 1; i <= 4; ++i)
        {
                if(!in(i))
                {
                        a[step] = i;
                        work(step+1);
                        a[step] = 0;
                }
        }
}

int main()
{
        work(0);
        printf("\n");

        return 0;
}

点评

我很赞同!: 5.0
我很赞同!: 5
够猛。。。  发表于 2017-8-12 19:45

评分

参与人数 1鱼币 +5 收起 理由
不二如是 + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-13 14:09:52 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-17 18:22:32 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-18 18:58:54 | 显示全部楼层

JavaScript

本帖最后由 心中的日月 于 2017-8-18 19:37 编辑
for(i=1,count=0,str='';i<=4;i++){
         for(j=1;j<=4;j++){
                if(i==j){continue;}
                for(k=1;k<=4;k++){
                        if(i==k||j==k){continue;}
                        count++;
                        str+=100*i+10*j+k+'\t';
                        if(count%5==0){str+='\n';}
                }
        }
}
console.log(str);

点评

我很赞同!: 5.0
我很赞同!: 5
  发表于 2017-9-11 08:46

评分

参与人数 1鱼币 +6 收起 理由
不二如是 + 6 棒!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-11 08:39:50 | 显示全部楼层
24个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-18 21:03:57 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-19 11:13:44 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-2 05:20:59 | 显示全部楼层
have a look
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-18 10:25:01 | 显示全部楼层
来看一下  真的有JS 了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-26 10:57:21 | 显示全部楼层
我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-15 09:06:43 | 显示全部楼层
学习一下,非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-5 21:48:43 | 显示全部楼层
24个.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 21:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表