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

趣味算法------试用 6 和 9 组成的最大数字

目录

​编辑

题目描述

解题思路

具体代码

总结


题目描述


给你一个仅由数字 6 和 9 组成的正整数 num。

你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。

请返回你可以得到的最大数字。

输入格式
一个整数

输出格式
一个整数

输入输出样例
输入1
9669

输出1
9969

解题思路

        既然最多只能反转1位数字,那我们当然要反转位上的数字是6的最高位变成9,那么如果用递归求解这道题,就是先定义一个递归函数,无返回值,形参为1个整数 void fun(n)。只要传入数字不为0,下一级递归函数就是 fun(n/10)。直到n为初始数字为高位的位数时开始一级一级退出递归,每一层都检查该级递归实参的个位数字是不是6,如果是的话反转成9打印,并且定义一个flag置为0,表示以后再碰到个位数字是6的实参,也不改变该位置的值的打印结果。

具体代码

#include<stdio.h>
int flag = 1;
void fun(int n)
{   if(n == 0)return;fun(n/10);if(n%10 == 6&&flag){printf("9");flag = 0;}elseprintf("%d",n%10);
}
int main(void)
{int n;scanf("%d",&n);fun(n);
}

总结

        该题的本质是从最高位一位一位打印数字,只有当第一次碰到6后该数字打印成9。通过改进算法可以使之返回结果值。


http://www.mrgr.cn/news/12198.html

相关文章:

  • streamlit+wordcloud使用pyinstaller打包遇到的一些坑
  • SpringBootWeb入门-HTTP协议、Tomcat下载、基本使用、入门程序解析
  • 每天一个数据分析题(四百九十九)- 数据集
  • EmguCV学习笔记 VB.Net 6.S 特别示例
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • JVM知识点记录
  • jQuery 事件
  • 【UE5】库存系统——01
  • MySQL集群技术4——MySQL路由
  • 什么是令牌桶算法?工作原理是什么?使用它有哪些优点和注意事项?
  • 探索Objective-C中的富文本世界:NSAttributedString与NSMutableAttributedString
  • 这几天旅游去了,刚回来,有几点感想
  • Java框架myBatis(三)
  • Hadoop: Mapreduce了解
  • ZooKeeper可视化工具
  • 如何在项目中配置.gitignore文件
  • SpringBoot集成kafka-生产者发送消息
  • 十一:C语言-操作符详解
  • Redis windows 指定端口的方式启动
  • 通过重构得到更深层的理解