当前位置: 首页 > news >正文

C语言程序设计每日一练(1)

探索数字组合的奇妙世界:如何生成所有独特的三位数

当我们想要探索由1、2、3、4这四个数字能组成多少个不同的三位数时,我们实际上是在解决一个排列组合的问题。这不仅是一个数学问题,也是编程领域经常遇到的挑战,特别是在数据处理、密码学或算法设计中。

问题分析

为了解决这个问题,我们首先要理解题目的核心要求:

  1. 互不相同:每个数字在三位数中只能出现一次。
  2. 无重复数字:任意两个不同的三位数之间,不能出现完全相同的数字组合。

考虑到这两个要求,我们可以通过三重循环来生成所有可能的三位数组合。每一位(百位、十位、个位)都可以是1、2、3、4中的任意一个数字,但我们需要确保在同一组合中,这三个位置的数字各不相同。

程序解读

下面的C语言程序就是基于上述思路编写的:

#include <stdio.h>  int main()  
{  int i, j, k;  printf("\n");  for (i = 1; i < 5; i++) /* 百位 */  for (j = 1; j < 5; j++) /* 十位 */  for (k = 1; k < 5; k++) /* 个位 */  {  if (i != k && i != j && j != k) /* 确保i、j、k三位互不相同 */  printf("%d%d%d\n", i, j, k); /* 输出组合 */  }  return 0;  
}

在这段代码中,我们使用了三重循环来遍历1到4这四个数字。if语句确保三个位置上的数字都是不同的,只有满足这个条件,才会输出这个组合。

输出结果与总结

运行这段程序,你会得到所有由1、2、3、4组成的、无重复数字的三位数。这些数字在密码学、统计学和数据科学中都有重要的应用。通过编程,我们不仅可以解决这类具体的数学问题,还可以更深入地理解排列组合的原理,并将其应用于更广泛的领域。

此外,这个程序也展示了循环和条件语句在编程中的基础而重要的应用。对于初学者来说,这是一个很好的练习和理解编程基础概念的机会。通过简单的修改,这个程序还可以用于解决其他类似的问题,比如生成所有可能的、由特定数字组成的其他长度的数字串等。

总的来说,这个程序不仅解决了一个具体的数学问题,还展示了编程在解决排列组合问题中的灵活性和实用性。通过编写和执行这样的程序,我们可以更深入地理解数字、编程和逻辑之间的关系。

算法详解

  1. 初始化:算法开始时,我们定义了三个循环变量ijk,分别代表三位数的百位、十位和个位数字。

  2. 三重循环

    • 外层循环(i循环)遍历1到4,代表三位数百位上的数字。
    • 中间循环(j循环)同样遍历1到4,代表十位数。
    • 内层循环(k循环)也是遍历1到4,代表个位数。
  3. 条件判断:在每次内层循环中,都会检查if (i != k && i != j && j != k)这个条件,以确保三个位置上的数字互不相同。这是满足题目要求“互不相同且无重复数字”的关键步骤。

  4. 输出结果:如果满足上述条件,则输出这个三位数。注意,在输出时,我们直接将ijk连接成一个数字输出,而不是以逗号分隔。因此,在实际代码中,应该将printf("%d,%d,%d\n",i,j,k);修改为printf("%d%d%d\n",i,j,k);以避免输出错误。

算法复杂度

  • 时间复杂度

  • 由于我们有三重循环,每重循环最多执行4次(数字1到4),所以总的时间复杂度是O(n^3),在这里n=4,因此是O(64)。但实际上,因为数字是固定的(1,2,3,4),所以时间复杂度可以看作是常量的,即O(1)。然而,如果问题扩展到更大的数字范围,时间复杂度将随数字数量的增加而立方级增长。

  • 空间复杂度

  • 此算法仅使用了几个整型变量来存储当前的数字组合,并没有使用额外的数据结构来存储结果或中间数据。因此,其空间复杂度是O(1),即常量空间。

优化与扩展

虽然这个算法对于当前的问题是有效的,但如果我们需要处理更大的数字范围或更多的位数,它可能就会变得非常低效。在这种情况下,我们可以考虑使用更高效的算法,如回溯法或动态规划,来生成所有可能的组合。

此外,如果我们只需要知道有多少种组合而不是具体的组合是什么,我们可以使用组合数学中的排列公式来计算。对于这个问题,由于我们有4个不同的数字,并且我们要选择3个来组成一个三位数,所以总的排列数就是4的阶乘除以(4-3)的阶乘,即4!/1! = 24种不同的组合。

相关文章:

C语言程序设计每日一练(1)

探索数字组合的奇妙世界&#xff1a;如何生成所有独特的三位数 当我们想要探索由1、2、3、4这四个数字能组成多少个不同的三位数时&#xff0c;我们实际上是在解决一个排列组合的问题。这不仅是一个数学问题&#xff0c;也是编程领域经常遇到的挑战&#xff0c;特别是在数据处…...

Spring 统一功能处理

前言:为什么要有统一功能处理? 我们在进行数据的返回的时候,不同的方法返回的数据类型也不一样,但是我们前端有时候期望拿到是一样的数据类型。就好比买菜的时候期望最后是用一个大的塑料袋进行包装的。 那么我们可以在HTTP进行响应的之前,做一些事情,让我们返回的数据统…...

【软设】知识点速记2

1.安全性、可靠性与系统性能评测基础知识 1.1计算机和网络安全 1.1.1 安全威胁 网络安全威胁是指任何可能损害网络系统的保密性、完整性和可用性的因素或行为。这些威胁可能来自内部或外部,包括恶意软件、信息泄露、DDoS攻击、社交工程、网络钓鱼、黑客攻击和资源滥用等多种…...

激光雷达和相机的联合标定工具箱[cam_lidar_calibration]介绍

激光雷达和相机的联合标定工具箱[cam_lidar_calibration]介绍 写在前面安装过程调试过程标定成功可视化展示 写在前面 激光雷达和相机联合标定工具 论文地址&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9564700 github地址: https://github.com…...

ML.NET(二) 使用机器学习预测表情分析

这个例子使用模型进行表情分析&#xff1a; 准备数据&#xff1a; happy,sad 等&#xff1b; using Common; using ConsoleApp2; using Microsoft.ML; using Microsoft.ML.Data; using System.Diagnostics; using static Microsoft.ML.Transforms.ValueToKeyMappingEstimator;…...

YOLOv9最新改进系列:YOLOv9改进之添加注意力-ContextAggregation,有效涨点!!!

YOLOv9最新改进系列&#xff1a;YOLOv9改进之添加注意力-ContextAggregation&#xff0c;有效涨点&#xff01;&#xff01;&#xff01; YOLOv9原文链接戳这里&#xff0c;原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里&#xff01; 详细的改进教程以及源码&#xff…...

【数据结构】初识数据结构与复杂度总结

前言 C语言这块算是总结完了&#xff0c;那从本篇开始就是步入一个新的大章——数据结构&#xff0c;这篇我们先来认识一下数据结构有关知识&#xff0c;以及复杂度的相关知识 个人主页&#xff1a;小张同学zkf 若有问题 评论区见 感兴趣就关注一下吧 目录 1.什么是数据结构 2.…...

子域名是什么?有什么作用?

在互联网世界中&#xff0c;域名是我们访问网站的关键。每一个公司的网站都需要拥有自己的域名&#xff0c;其中有些大型公司的网站还不止一个域名&#xff0c;除了主域名外还拥有子域名。有些人感到非常困惑&#xff0c;不知道子域名是什么。其实子域名也就是平时所说的二级域…...

学习 Rust 的第一天:基础知识

如果你对 Rust 一无所知&#xff0c;那我来解释一下。 “Rust 是一种系统编程语言&#xff0c;其优先考虑性能、内存安全和零成本抽象。” 你好&#xff0c;世界 我之前研究过 Rust&#xff0c;并且对 Java、C、C 和 Python 的基本编程概念有相当了解。 今天&#xff0c;我…...

电商技术揭秘七:搜索引擎中的SEO关键词策略与内容优化技术

文章目录 引言一、关键词策略1.1 关键词研究与选择1. 确定目标受众2. 使用关键词研究工具3. 分析搜索量和竞争程度4. 考虑长尾关键词5. 关键词的商业意图6. 创建关键词列表7. 持续监控和调整 1.2 关键词布局与密度1. 关键词自然分布2. 标题标签的使用3. 首次段落的重要性4. 关键…...

系统开发实训小组作业week7 —— 优化系统开发计划

目录 1. 建立规则&#xff0c;仪式&#xff0c;流程&#xff0c;模式 2. 给好行为正面的反馈 3. 明确指出不合适的行为&#xff0c;必要时调整人员 在 “系统开发实训课程” 中&#xff0c;我们小组的项目是 “电影院会员管理系统” 。在项目的开发过程中&#xff0c;我们遇…...

golang的引用和非引用总结

目录 概述 一、基本概念 指针类型&#xff08;Pointer type&#xff09; 非引用类型&#xff08;值类型&#xff09; 引用类型&#xff08;Reference Types&#xff09; 解引用&#xff08;dereference&#xff09; 二、引用类型和非引用类型的区别 三、golang数据类型…...

2024认证杯数学建模B题思路模型代码

目录 2024认证杯数学建模B题思路模型代码:4.11开赛后第一时间更新&#xff0c;获取见文末名片 第十三届“认证杯”数学中国数学建模比赛赛后体会 2024认证杯数学建模B题思路模型代码:4.11开赛后第一时间更新&#xff0c;获取见文末名片 第十三届“认证杯”数学中国数学建模比…...

一种快速移植 OpenHarmony Linux 内核的方法

移植概述 本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开发者&#xff0c;介绍一种借助三方芯片平台自带 Linux 内核的现有能力&#xff0c;快速移植 OpenHarmony 到三方芯片平台的方法。 移植到三方芯片平台的整体思路 内核态层和用户态层 为了更好的解释整个内核…...

java的jar包jakarta.jakartaee-web-api和jakarta.servlet-api有什么区别

jakarta.jakartaee-web-api和jakarta.servlet-api都是Java EE&#xff08;现在是 Jakarta EE&#xff09;中的一部分&#xff0c;用于开发基于Java EE平台的Web应用程序。它们之间的区别在于以下几点&#xff1a; 命名空间&#xff1a; jakarta.servlet-api是Java EE 8之前版本…...

QT_day2

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…...

Advanced RAG 02:揭开 PDF 文档解析的神秘面纱

编者按&#xff1a; 自 2023 年以来&#xff0c;RAG 已成为基于 LLM 的人工智能系统中应用最为广泛的架构之一。由于诸多产品的关键功能&#xff08;如&#xff1a;领域智能问答、知识库构建等&#xff09;严重依赖RAG&#xff0c;优化其性能、提高检索效率和准确性迫在眉睫&am…...

Spring面试题pro版-1

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而&#xff0c;Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言&#xff0c;绝大部分Java应用都可以从Spring中受益。 Spring是什么…...

6 Reverse Linked List

分数 20 作者 陈越 单位 浙江大学 Write a nonrecursive procedure to reverse a singly linked list in O(N) time using constant extra space. Format of functions: List Reverse( List L ); where List is defined as the following: typedef struct Node *PtrToNo…...

【随笔】Git 高级篇 -- 相对引用2 HEAD~n(十三)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…...

2024免费Mac电脑用户的系统清理和优化软件CleanMyMac

作为产品营销专家&#xff0c;对于各类产品的特性与优势有着深入的了解。CleanMyMac是一款针对Mac电脑用户的系统清理和优化软件&#xff0c;旨在帮助用户轻松管理、优化和保护Mac电脑。以下是关于CleanMyMac的详细介绍&#xff1a; CleanMyMac X2024全新版下载如下: https://…...

Centos7源码方式安装Elasticsearch 7.10.2单机版

版本选择参考&#xff1a;Elasticsearch如何选择版本-CSDN博客 下载 任选一种方式下载 官网7.10.2版本下载地址&#xff1a; https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz 网盘下载链接 链接&#xff1a;https://pan…...

mysql的安装和部署

##官网下载mysql 我下载的是一个mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz 可以通过xshell 或者xftp传送 xshell则是先下载一个lrzsz 执行以下的命令 yum install lrzsz -y #安装好我下面有个一键安装的脚本 #!/bin/bash#解决软件的依赖关系 yum install cmake ncurses…...

大数据基本名词

目录[-] 1.1. 1. Hadoop1.2. 2. Hive1.3. 3. Impala1.4. 4. Hbase1.5. 5.hadoop hive impala hbase关系1.6. 6. Spark1.7. 7. Flink1.8. 8. Spark 和 Flink 的应用场景 1. Hadoop 开源官网&#xff1a;https://hadoop.apache.org/ Hadoop是一个由Apache基金会所开发的分…...

网站网页客服、微信公众号客服、H5客服、开源源码与高效部署的完美结合

随着互联网技术的飞速发展&#xff0c;企业与客户之间的沟通方式也在持续变革。在线客服系统作为一种新兴的沟通工具&#xff0c;已经成为提升企业服务质量、增强客户满意度的重要手段。本文将详细介绍在线客服系统的优势、功能以及如何高效部署&#xff0c;特别是推荐一款名为…...

1、Qt UI控件 -- qucsdk

前言&#xff1a;Qt编写的自定义控件插件的sdk集合&#xff0c;包括了各个操作系统的动态库文件以及控件的头文件和sdk使用demo。类似于Wpf中的LivChart2控件库&#xff0c;都是一些编译好的控件&#xff0c;可以直接集成到项目中。该控件是飞扬青云大神多年前开发的&#xff0…...

Sora是什么?Sora怎么使用?Sora最新案例视频以及常见问题答疑

Sora 是什么&#xff1f; 2024年2月16日&#xff0c;OpenAI 在其官网上面正式宣布推出文本生成视频的大模型Sora 这样说吧给你一段话&#xff0c; 让你写一篇800字的论文&#xff0c;你的理解很可能都有偏差&#xff0c;那么作为OpenAi要做文生视频到底有多难&#xff0c;下面…...

如何在Ubuntu系统使用docker部署DbGate容器并发布至公网可访问

文章目录 1. 安装Docker2. 使用Docker拉取DbGate镜像3. 创建并启动DbGate容器4. 本地连接测试5. 公网远程访问本地DbGate容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 本文主要介绍如何在Linux Ubuntu系统中使用Docker部署DbGate数据库管理工…...

解决 VSCode 编辑器点击【在集成终端中打开】出现新的弹框

1、问题描述 在 VSCode 的项目下&#xff0c;鼠标右键&#xff0c;点击【在集成终端中打开】&#xff0c;出现新的一个弹框。新版的 VSCode 会有这个问题&#xff0c;一般来说我们都希望终端是在 VSCode 的控制台中打开的&#xff0c;那么如何关闭这个弹框呢&#xff1f; 2、解…...

从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南

文章目录 一、写组件1、注册全局组件方法2、组件13、组件2 二、测试三、发布1、配置package.json2、生成库包3、配置发布信息4、发布 四、使用1、安装2、使用 五、维护1、维护和更新2、注意事项 一、写组件 确定组件库的需求和功能&#xff1a;在开始构建组件库之前&#xff0c…...