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

PTA.7-6 数字拆分求和

题目

在这里插入图片描述

在这里插入图片描述

解题思路

这题目有两种思路:1. 利用等差数列公式 2. 暴力法
公式记不住,所以讲下暴力法(PTA对时间空间复杂度要求很低,LeetCode行不通的,还是要背公式)

暴力法很简单,就是穷举所有可能性。

  • 枚举可能的序列首项 a1。
  • 对于每个首项,构造从 a1 开始且相邻元素差值依次递增的序列,并检查该序列的和是否等于 k。
  • 如果符合条件,则输出该序列。

具体步骤是:

首先假设序列的首项为 a1,然后依次构造出符合条件的序列。
对每个序列,依次加上差值 1、2、3、…,直到总和等于 k 或超出 k。
如果找到符合条件的序列,打印出来。

代码

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int k = sc.nextInt();findSequences(k);sc.close();}public static void findSequences(int k) {boolean findRes = false;//从1开始尝试for(int start = 1; start < k ; start++){//默认等差分布从1开始(题目规定)int difference = 1;int sum = 0;List<Integer> tmpList = new ArrayList<>();for(int num = start; sum < k; difference++){//更新总和sum += num;tmpList.add(num);//每次加一个等差分布值num += difference;if(sum == k){printSequence(tmpList, sum < k);findRes = true;break;}}}if(!findRes){System.out.println("");}}// 打印序列public static void printSequence(List<Integer> sequence, boolean end) {for (int i = 0; i < sequence.size(); i++) {if (i > 0) {System.out.print(",");}System.out.print(sequence.get(i));}if(!end){System.out.println();}}
}

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

相关文章:

  • css——网格布局
  • Unity-OpenCV-Imgproc函数概览
  • 计算机毕业设计选题推荐-出租车拼车系统-Java/Python项目实战
  • Java重修笔记 第四十七天 HashTable 类、Properties 类、如何选择集合
  • vscode开发佳明表盘-monkeyc语法篇(入门二)
  • 服务器禁用远程(22)
  • 内存序相关知识点
  • java发送邮箱如何实现?如何配置Java发信?
  • 两个简单示例,轻松干翻CPU
  • prompt实用技巧-竞对分析-飞书发布会上多维表和低代码平台原型分析
  • 云计算之大数据(下)
  • 菜鸟入门Docker
  • kubernetes Pod failed to create fsnotify watcher: too many open files
  • IPv4地址学习
  • 各网安上市公司的现金还能撑多久?
  • 霍尼韦尔、书客、米家护眼大路灯怎么样?终极测评对比和护眼灯王者机型
  • 项目实战系列: 家居购项目 第一部分
  • 大家都谈的Scaling Law是什么?
  • 两个长整数字符串求和(不允许使用ES6+)
  • SAP物料分类帐后台配置