C语言 每日一题

2023-11-19

9月13日 星期一

题目一:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

题目描述:

  • 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。保证输入的整数最后一位不是0。

程序分析

  • 待补充

输入描述:

  • 输入一个int型整数

输出描述:

  • 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

示例:

输入
9876673
输出
37689

题目解析:

#include <stdio.h>
int main()
{
    int n,m=0;
    scanf("%d",&n);
    int a[10]={0};
    while(n){
        if(a[n%10]==0)
        {
            a[n%10]++;
            m=m*10+n%10;
        }
        n/=10;
    }
    printf("%d",m);
    return 0;
}

题目二:输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。保证输入的整数最后一位不是0。

题目描述:

  • 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析

  • 可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

输入描述:

输出描述:

  • 输出不重复的三位数

示例:

1,2,3
1,2,4
1,3,2
1,3,4
1,4,2
1,4,3
2,1,3
2,1,4
2,3,1
2,3,4
2,4,1
2,4,3
3,1,2
3,1,4
3,2,1
3,2,4
3,4,1
3,4,2
4,1,2
4,1,3
4,2,1
4,2,3
4,3,1
4,3,2

题目解析:

  1. 方法一:容易想到,但是浪费了CPU的资源,执行很多不必要的循环

    #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++) { // 确保i、j、k三位互不相同
                    if (i!=k&&i!=j&&j!=k) { 
                        printf("%d,%d,%d\n",i,j,k);
                    }
                }
            }
        }
    }
    
    
  2. 方法二:尽量减少不必要的循环,做了如下的小优化。

    #include <stdio.h>
    #include <stdint.h>
    
    int main() {
        uint32_t i; // 百位
        uint32_t j; // 十位
        uint32_t k; // 个位
        
        for (i=1; i<5; i++) {
            for (j=1; j<5; j++) {
                // 百位与十位重复
                // 跳过当前十位
                if (j==i) {
                    continue;
                }
                
                for (k=1; k<5; k++) {
                    // 个位与百位或十位重复
                    // 跳过当前个位
                    if (k==j || k==i) {
                        continue;
                    }
                    
                    printf("%u,%u,%u\n", i, j, k);
                }
            }
        }
    }
    	
    	```
    
    
  3. 方法三:深搜法(DFS)写此题,采用嵌套函数,可以不用写多个for循环。如果遇到需要很多个for循环的情况可以采用这种方案。

    #include <stdio.h>
    #include <stdlib.h>
    
    int  b[4],arr[4];//定义两个数组用来类比
    int Count=0;//计数器
    void DFS(int step){
        if(step==5){
            if(arr[1]!=arr[2]&& arr[1]!=arr[3]&&arr[2]!=arr[3]){//判断哪些符合条件
                Count++;
                printf("%d%d%d\n",arr[1],arr[2],arr[3]);//输出可用排列
            }
            return ;
        }
    
        for(int i=1;i<=4;i++){
            if(b[i]==0){
                arr[step]=i;
                b[i]=1;//排除重复
                DFS(step+1);//自己调用自己
                b[i]=0;
            }
        }
        return ;
    }
    
    int main(void)
    {
        DFS(1);
        printf("共有%d种",Count);
        return 0;
    }
    
    

9月14日 星期二

9月15日 星期三

9月16日 星期四

9月17日 星期五

9月18日 星期六

9月19日 星期日

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言 每日一题 的相关文章

  • C/C++---------------LeetCode第509. 斐波那契数

    斐波那契数列 题目及要求 暴力递归 备忘录的递归 动态规划 题目及要求 斐波那契数 通常用 F n 表示 形成的序列称为 斐波那契数列 该数列由 0 和 1 开始 后面的每一项数字都是前面两项数字的和 也就是 F 0 0 F 1 1 F n
  • 华为OD机试真题-员工派遣-2023年OD统一考试(C卷)

    题目描述 某公司部门需要派遣员工去国外做项目 现在 代号为x的国家和代号为y的国家分别需要cntx名和cnty名员工 部门每个员工有一个员工号 1 2 3 工号连续 从1开始 部长派遣员工的规则 规则1 从 1 k 中选择员工派遣出去 规则
  • C语言,scanf出错时,重新输入

    问题的关键在于 把stdin中剩余的字符 吃掉 才能正常地进行下次输入 scanf出错后重新输入 使用 n 清空错误的字符 include
  • 如何利用CHAT写C程序?

    问CHAT 用c语言编写在二维字符数组中查找某个字符串 CHAT回复 以下是一个简单的C程序 它将在二维字符数组中查找特定的字符串 c include
  • 华为OD机试真题-螺旋数字矩阵-2023年OD统一考试(C卷)

    题目描述 疫情期间 小明隔离在家 百无聊赖 在纸上写数字玩 他发明了一种写法 给出数字 个数n 和 行数m 0 lt n 999 0 lt m 999 从左上角的1开始 按照 顺时针螺旋向内写 方式 依次写出2 3 n 最终形成一个 m行矩
  • [补题记录] Educational Codeforces Round 160 (Rated for Div. 2)(A~C)

    URL https codeforces com contest 1913 problem D 目录 A Problem 题意 Thought 思路 Code 代码 B Problem 题意 Thought 思路 Code 代码 C Pro
  • VScode配置mingw C语言环境变量

    C语言IDE VScode VScode是个人比较喜欢的一款IDE软件 鄙人曾同时在VScode软件中运行三个终端 开发Python Golang和C语言 下载地址如下 code visualstudio com VScode配置mingw
  • 华为OD机试真题-部门人力分配-2023年OD统一考试(C卷)

    题目描述 部门在进行需求开发时需要进行人力安排 当前部门需要完成N个需求 需求用requirements 表示 requirements i 表示第i个需求的工作量大小 单位 人月 这部分需求需要在M个月内完成开发 进行人力安排后每个月的人
  • 华为OD机试真题-部门人力分配-2023年OD统一考试(C卷)

    题目描述 部门在进行需求开发时需要进行人力安排 当前部门需要完成N个需求 需求用requirements 表示 requirements i 表示第i个需求的工作量大小 单位 人月 这部分需求需要在M个月内完成开发 进行人力安排后每个月的人
  • 《妙趣横生的算法》(C语言实现)- 第6章 数学趣题(二)

    6 1 连续整数固定和问题 找出任意输入的整数n的全部的连续整数固定和 题目分析 至少要找出两个连续整数的固定和 一个整数的话就是本身了呢 那如何确定这些连续整数呢 想明白了 第一个整数设为a 第二个整数是a 1 假设有m个连续整数 那么第
  • linux 内核同步互斥技术之cache 伪共享和隐含内存屏障

    隐含内存屏障 内核的有些函数隐含内存屏障 1 获取和释放函数 2 中断禁止函数 1 获取和释放函数 获取 acquire 函数包括如下 1 获取锁的函数 锁包括自旋锁 读写自旋锁 互斥锁 信号量和读写信号量 2 smp load acqui
  • linux ARM64 处理器内存屏障

    一 内存类型 ARMv8架构将系统中所有的内存 按照它们的特性 划分成两种 即普通内存和设备内存 并且它们是互斥的 也就是说系统中的某段内存要么是普通内存 要么是设备内存 不能都是 1 普通内存 Normal Memory 普通内存的特性是
  • 串口流控(CTS/RTS)使用详解

    1 流控概念 在两个设备正常通信时 由于处理速度不同 就存在这样一个问题 有的快 有的慢 在某些情况下 就可能导致丢失数据的情况 如台式机与单片机之间的通讯 接收端数据缓冲区已满 则此时继续发送来的数据就会丢失 流控制能解决这个问题 当接收
  • BMS开发之面向对象思想(adbms1818)

    借鉴adbms1818的底层驱动代码 前言 adbms1818的主要用途就是不同种类的寄存器里面存储不同的数据 程序员需要通过特定的协议往寄存器里面写入或者读出数据 1 定义一个结构体 里面存储了adbms1818的所有寄存器的信息 然后我
  • C语言——!(--x)和!(-x)以及while(!(--x)) 和 while(!(-x))

    一 x 和 x 1 x 这个表达式表示先对变量 x 执行自减操作 即 x 的值减去 1 然后对自减后得到的结果取逻辑非 如果自减后的 x 等于 0 则逻辑非运算的结果为真 值为 1 否则结果为假 值为 0 2 x 这个表达式表示对 x 取反
  • 华为OD机试真题-反射计数-2023年OD统一考试(C卷)

    题目描述 给定一个包含 0 和 1 的二维矩阵 给定一个初始位置和速度 一个物体从给定的初始位置触发 在给定的速度下进行移动 遇到矩阵的边缘则发生镜面反射 无论物体经过 0 还是 1 都不影响其速度 请计算并给出经过 t 时间单位后 物体经
  • Freertos低功耗管理

    空闲任务中的低功耗Tickless处理 在整个系统运行得过程中 其中大部分时间都是在执行空闲任务的 空闲任务之所以执行 因为在系统中的其他任务处于阻塞或者被挂起时才会执行 因此可以将空闲任务的执行时间转换成低功耗模式 在其他任务解除阻塞而准
  • /lib64/libstdc++.so.6库缺失

    问题 lib64 libstdc so 6 version CXXABI 1 3 8 not found lib64 libstdc so 6 version CXXABI 1 3 9 not found lib64 libstdc so
  • C和指针课后答案

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 第八章课后答案 提示 以下是本篇文章正文内容 下面案例可供参考
  • 带头双向循环链表基础

    带头双向循环链表基础 销毁 销毁 void ListDestory ListNode phead void ListDestory ListNode phead assert phead ListNode cur phead gt next

随机推荐

  • [Leetcode] 3.无重复字符的最长子串

    题目描述 给定一个字符串 找出不含有重复字符的最长子串的长度 示例 给定 abcabcbb 没有重复字符的最长子串是 abc 那么长度就是3 给定 bbbbb 最长的子串就是 b 长度是1 给定 pwwkew 最长子串是 wke 长度是3
  • CUDA复制测试

    这里主要是测试了内存数据读写操作的几种方式 记录了一些测试结果 对于二维数组 10244 1024 4 1 二维线程格 每个线程对应一个元素 2 转换为int2类型 线程宽度减半 3 线程宽度和高度减半 单个线程操作邻近的4个元素 4 线程
  • 使用神经网络对手写体数字图片数据分类(MLP/PCA)

    使用神经网络对手写体数字图片数据分类 MLP PCA 使用sklearn neural network MLPClassifier类实现手写数字图片识别 MLP的常用的几个参数一般为activation 选择激活函数 如relu sigmo
  • 《2023新版JavaWeb开发教程》学习笔记总目录

    本篇文章是本人对于黑马程序员的 2023新版JavaWeb开发教程 的个人向知识点总结归类 用于巩固自身所学知识 以及查阅知识点和相关代码 并尝试养成做笔记的习惯 黑马程序员2023新版JavaWeb开发教程 实现javaweb企业开发全流
  • git status 展示的中文文件乱码

    乱码现象 解决方法 1 打开 项目根目录下的 git config 配置文件 2 在图中位置追加 quotepath false 效果图
  • 权重计算方法三:变异系数法(Coefficient of Variation)

    目录 1 原理简介 2 步骤详解 2 1 原始数据收集 2 2 指标数据正向化 2 3 数据标准化 消除量纲 2 4 计算变异系数 2 5 计算权重及得分 3 案例分析 3 1 获取原始数据 3 2 指标正向化 3 3 数据标准化 3 4
  • 电巢携手武昌工学院工程能力实训顺利开班!

    为深化校企合作 产教融合打造新工科建设 提升学生工程实践能力 电巢工程能力实训班按照不同岗位类别 匹配对应的企业岗位任职能力要求对学生开展分级培养 以产业需求为导向 培养创新型 应用型人才 6月6日下午4时 深圳电巢联合武昌工学院信息工程学
  • IDEA中如何使用debug调试项目 一步一步详细教程

    原文链接 https www linuxidc com Linux 2017 09 146772 htm 在现在的开发中 我们经常采用Debug来追踪代码的运行流程 通常在程序运行过程中出现异常 启用Debug模式可以分析定位异常发生的位置
  • ST-LINK在MDK环境下载hex提示“Internal command error”和“Error:Flash Download failed Cortex-M3”错误的解决办法

    ST LINK V2在MDK环境下 使用SW DP模式下载hex时出现以下错误提示 出现这种错误一般都是ST LINK和目标板SW DP接线时没有将目标板的电源线接到ST LINK插座的TVCC端导致的 解决步骤 1 目标板使用外接电源供电
  • JDK8新特性(二):JDK8接口增强

    1 接口增强 在JDK8之前 JDK规定接口中只能定义 静态常量 抽象方法 修饰词 interface 接口名 静态常量 抽象方法 在JDK8之后 对接口进行了增强 我们可以在接口中定义 静态常量 抽象方法 默认方法 静态方法 修饰词 in
  • CUDA各版本官方下载地址

    一 CUDA各版本官方下载地址 地址 https developer nvidia com cuda toolkit archive 二 说明 备忘 平时找个版本太难找了 转载于 https www cnblogs com songxing
  • Vue2 + 高德地图API 获取用户当前位置等信息,错误default.CitySearch is not a Constructor的应对

    效果 高德地图API参考手册 控制台输出信息 代码 public index html 使用CDN引入高德地图API
  • SQL--查询结果最后加合计行

    union all 是一种 SQL 操作符 用于将两个或多个 SELECT 语句的结果集合并成一个结果集 与 union 不同的是 union all 不会去重 即会保留重复的行 使用 union all 可以方便地将多个表或查询结果合并成
  • 计算机二级【C语言】-复习使用

    文章目录 第一章 C语言概述 1 1 C语言基础知识 1 23题 1 2 常量 变量和数据类型 24 73题 第二章 运算符与表达式 2 1 C语言运算符简介 74 79题 2 2 算术运算符和算数表达式 80 99题 2 3 赋值运算符和
  • Docker环境安装

    安装Docker 开启Docker服务 查看安装结果 设置开机启动 配置Docker镜像下载加速
  • 【第42篇】MicroNet:以极低的 FLOP 实现图像识别

    文章目录 摘要 一 简介 二 相关工作 三 我们的方法 MicroNet 3 1 设计原则 3 2 Micro Factorized 卷积 3 3 动态 Shift Max 3 4 与先前工作的关系 四 MicroNet 架构 五 实验 I
  • JWT解析库-nimbus-jose-jwt

    JWT解析库 nimbus jose jwt nimbus jose jwt 使用他可以生成或者解析对称加密或者非对称加密的的JWT JWS是JWT规范的落地实现 1 依赖 1 1 pom依赖
  • 深夜好文

    题图 https unsplash com oldskool2016 无论项目中还是面试都离不开装饰器话题 装饰器的强大在于它能够在不修改原有业务逻辑的情况下对代码进行扩展 权限校验 用户认证 日志记录 性能测试 事务处理 缓存等都是装饰器
  • 时间复杂度常见算法

    常见时间复杂度对应算法 注 if的时间复杂度为O 1 一层for循环时间复杂度为O n 两次for循环时间复杂度为O n 一个算法中有多个for 但都是单层for 时间复杂度为O n
  • C语言 每日一题

    C语言 每日一题 9 13 9 19 9月13日 星期一 题目一 有1 2 3 4个数字 能组成多少个互不相同且无重复数字的三位数 都是多少 题目二 输入一个int型整数 按照从右向左的阅读顺序 返回一个不含重复数字的新的整数 保证输入的整