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

Java算法练习day3

一、游游的重组偶数Java代码import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { // 纯数学运算实现 dep 函数和你C逻辑完全一样 public static int dep(int x) { int temp x; int k 0; // 保存最后一位数字 int last x % 10; while (temp 0) { int t temp % 10; // 找到第一个偶数位 if (t % 2 0) { // 计算 10^k int pow10 1; for (int i 0; i k; i) { pow10 * 10; } // 构造新数字和你C公式完全一样 int res x - t * pow10 last * pow10 - last t; return res; } temp / 10; k; } // 没找到偶数 return -1; } public static void main(String[] args) { Scanner in new Scanner(System.in); int q in.nextInt(); while (q-- 0) { int x in.nextInt(); if (x % 2 0) { System.out.println(x); } else { System.out.println(dep(x)); } } in.close(); } }分析逻辑非常清楚读到一个数据就判断一次如果是偶数直接返回是奇数判断后再返回1.Scanner 键盘输入读取多组整数数据--whileq--while (q-- 0) { int x in.nextInt(); if (x % 2 0) { System.out.println(x); } else { System.out.println(dep(x)); } }2.dep 方法处理奇数重组数字public static int dep(int x) { int temp x; int k 0; // 保存最后一位数字 int last x % 10; while (temp 0) { int t temp % 10; // 找到第一个偶数位 if (t % 2 0) { // 计算 10^k int pow10 1; for (int i 0; i k; i) { pow10 * 10; } // 构造新数字和你C公式完全一样 int res x - t * pow10 last * pow10 - last t; return res; } temp / 10; k; } // 没找到偶数 return -1; }例子x 123奇数最后一位last 3数字1 2 3从右找3 (奇) → 2 (偶)找到啦计算过程t 2偶数pow10 10十位公式123 - 210 310 - 3 2 123 -20 30 -3 2132逐行精解// 功能处理奇数 x返回交换后的新数没偶数返回-1 public static int dep(int x) { int temp x; // 临时备份 x用来逐位拆数字不破坏原数 x int k 0; // 记录当前正在看第几位从右数个位0十位1... int last x % 10; // 固定取出数字的最后一位后面要用来交换1. 循环从右往左一位一位检查数字while (temp 0) { // 只要还有数字没看完就继续 int t temp % 10; // 【关键】取出当前最右边的一位数字temp % 10永远取最后一位这是拆数字的标准写法if (t % 2 0) { // 如果这一位是偶数找到了2. 计算当前位的权重10 的多少次方int pow10 1; for (int i 0; i k; i) { pow10 * 10; }作用算出当前位代表多大个位10⁰ 1十位10¹ 10百位10² 100不用Math.pow()是避免浮点数精度出错3. 计算当前位的权重10 的多少次方int res x - t * pow10 last * pow10 - last t; return res; // 交换完成直接返回新数 }二、体操队形深度优先搜索import java.util.Scanner; public class Main { // 全局变量和 C 全局变量作用一样 static int ret; // 答案合法方案数 static int n; // 人数 static boolean[] vis; // 标记是否用过 static int[] arr; // 存储输入的数组 // DFS 深度优先搜索和你 C 的 dfs 完全一样 public static void dfs(int pos) { // 递归出口排完了所有人计数1 if (pos n 1) { ret; return; } // 遍历 1~n 尝试放每一个人 for (int i 1; i n; i) { if (vis[i]) continue; // 已经用过跳过 if (vis[arr[i]]) return; // 剪枝原题核心条件 vis[i] true; // 标记使用 dfs(pos 1); // 递归下一个位置 vis[i] false; // 回溯撤销标记 } } public static void main(String[] args) { Scanner sc new Scanner(System.in); // 初始化变量对应 C 全局变量 n sc.nextInt(); arr new int[n 1]; // 从 1 开始存方便和 C 对应 vis new boolean[n 1]; ret 0; // 读入数组 for (int i 1; i n; i) { arr[i] sc.nextInt(); } dfs(1); // 从第 1 个位置开始搜 System.out.println(ret); } }
http://www.rkmt.cn/news/1393512.html

相关文章:

  • CAD子系统,是自研还是外包?
  • 2026年5月冷制皂代工厂对比:基于重资产合规矩阵与品牌资产化的深度权威研报 - 资讯焦点
  • 终极指南:如何快速解决Windows热键冲突的完整方案
  • 【C++】数据结构之哈希表(散列表)
  • PaCE-RL:基于强化学习的ICU患者个性化血糖管理框架解析
  • 速速查看︱2026年湖北省直部分工程专业面试答辩通知,附上面试答辩注意事项
  • Win11Debloat:一键清理Windows系统垃圾,让你的电脑运行如飞
  • 对比学习与孪生网络:攻克跨用户手势识别泛化难题
  • 2026雅思哥口语课效果深度解析:提分快不快?对口语帮助大不大? - 品牌2025
  • 2026年5月实测 15 款 PDF 转 Word 工具,真正免费好用的就这 5 款! - 新闻快传
  • 泰国服装电商市场趋势洞察报告
  • 软硬件协同验证:从功能等价到需求驱动的两种形式化方法
  • 2026年必备:3招快速降低AI率,轻松通过论文AI检测 - 降AI实验室
  • 长春画室实测评测:教学、升学与配套的全维度对比 - 奔跑123
  • PyCharm安装
  • 2026职业装定制厂商实力榜,高性价比品牌深度测评 - 天涯视角
  • 终极小红书无水印下载指南:3种方式轻松收藏心仪内容
  • 30分钟深度解析:开源Windows 11系统优化工具完全手册
  • Android 11.0 Gboard输入法返回键无效修复功能实现
  • Steam挂刀行情站:24小时自动化交易监控系统的完整技术实现指南
  • TypeScript类型体操构建AI修心智能体生成引擎——从2300+豆包智能体到七境宇宙的类型安全实践
  • SchoolCMS:破解中小学校教务管理数字化困境的开源企业级解决方案
  • Tablacus Explorer:免费开源标签式文件管理器终极指南
  • 2026普洱本地水质检测测评;水质超标别乱测,直饮异味别忽视,水垢厚重别忽视,污水废水别乱送检,矿泉水质检别糊弄水质检测官方权威排名TOP5(2026年5月水质检测最新深度调研方案) - 防水补漏3
  • 配电柜源头厂家靠谱性鉴别:从资质到服务全解析 - 奔跑123
  • 虚幻引擎独立开发者必备:零代码用VaRest插件快速对接第三方服务API
  • 粉末包装机灌装机分装机选购指南:如何选到精准高适配设备 - 速递信息
  • BMEA-ViT:基于多头外部注意力的轻量级乳腺癌病理图像分类模型
  • 软件测试专栏(10/20):安全测试实战:OWASP Top 10漏洞检测与防护
  • 如何利用组策略精准管控USB与可移动存储设备