C语言每日一练——数字组合

举报
Linux猿 发表于 2022/02/27 22:53:05 2022/02/27
【摘要】 ​🎈 作者:Linux猿🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!🎈 关注专栏:数据结构和算法成神路【精讲】 优质好文持续更新中……🚀🚀🚀目录🍅一、题目描述🍅二、解题思路🍅三、代码实现🍓3.1 代码🍓3.2 代码解读🍅四、复杂度分析🍓4.1 时间复杂度🍓4.2 空间复杂...


🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏:数据结构和算法成神路【精讲】 优质好文持续更新中……🚀🚀🚀


目录

🍅一、题目描述

🍅二、解题思路

🍅三、代码实现

🍓3.1 代码

🍓3.2 代码解读

🍅四、复杂度分析

🍓4.1 时间复杂度

🍓4.2 空间复杂度

🍅五、总结


🍅一、题目描述

有 1、2、3、4 四个数字,问:能够组成多少个互不相同且没有重复的三位数?并输出组合后满足要求的数字 ?

例如:满足要求的三位数有:123,234,431,432……等。

注意:1、2、3、4 都可以填在个位、十位和百位,但是不能重复。


🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶


🍅二、解题思路

因为只有三位,依次在每一位上尝试使用1、2、3、4,并排除个位、十位和百位有重复的情况,满足的情况输出。

具体到代码,可以使用三层 for 循环,这三层 for 循环分别枚举百位十位个位上的数字。


🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶


🍅三、代码实现

🍓3.1 代码

#include <stdio.h>  // 头文件

int main()
{
    for(int i = 1; i < 5; ++i) {  // 枚举百位的数字
        for(int j = 1; j < 5; ++j) { // 枚举十位的数字
            for(int k = 1; k < 5; ++k) { // 枚举个位的数字
                if(i != j && j != k && i != k) {  // 排除重复的情况
                    printf("%d %d %d\n", i, j, k);
                }
            }
        }
    }
    return 0;
}

🍓3.2 代码解读

首先,第一行是头文件,int,printf 等的定义都在头文件#include <stdio.h>中,更多的头文件后续涉及到时会一一说明。

main 函数中主要包含三层 for 循环,分别对应枚举百位十位个位的数,三个变量 i、j、k 分别是百位、十位和个位上的数字。

if 语句用于排除重复的情况,分别比较百位和十位、十位和个位、百位和个位是否相等,都没有重复的情况下才进入 if 语句,使用 printf 函数输出结果。 


🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶


🍅四、复杂度分析

🍓4.1 时间复杂度

时间复杂度:O(n^3),这个 n = 4 为 for 循环的循环次数,因为有三层 for 循环,且 for 循环都是嵌套的,所以时间复杂度为 O(n^3)。

🍓4.2 空间复杂度

空间复杂度:O(1),在上述算法中,仅仅使用到了三个遍历 i,j,k,可以忽略不计,所以空间复杂度为 O(1)。


🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶


🍅五、总结

好了,本文就讲解到这个啦!主要考查对 for 循环以及 if 语句的应用,相信小伙伴看完后会加深对 for 循环的理解。


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞



🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏:数据结构和算法成神路【精讲】 优质好文持续更新中……🚀🚀🚀


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200