文章目录
- 算法入门三:循环结构:
-
- 引言:
- 循环结构:
-
- 1.洛谷 p5718 java 找最小值
- 2.洛谷 p5719 java 分类平均
- 3.洛谷 p5720 java 一尺之锤
- 4.洛谷 p5721 java 数字直角三角形
- 5.洛谷 p1980 java 计数问题
- 6.洛谷 p1035 java 级数求和
- 7.洛谷 p2669 java 金币
- 8.洛谷 p5722 Java 数列求和
- 9.洛谷 p1423 Java 小玉在游泳
- 10.洛谷 p1307 Java 数字反转
- 11.洛谷 p1720 Java 月落乌啼算钱
- 12.洛谷 p5724 Java求极值/最大跨度值
- 13.洛谷 p1420 Java 最长连号
- 14.洛谷 p1075 Java 质因数分解
- 15.洛谷 p5725 Java 求三角形
- 16.洛谷 p4956 Java Davor
- 17.洛谷 p1089 Java 津津的储蓄计划
- 18.洛谷 p5723 Java 质数口袋 提高题
- 19.洛谷 p1217 Java 回文质数 提高题
- 20.洛谷 p5726 Java 打分 提高题
- 21.洛谷 p1009 Java 阶乘之和 提高题
算法入门三:循环结构:
引言:
在小组的安排下,这个暑假我们统一学习三个星期的算法,在这里让我感觉最大的感受是,前面有人引你入门真的好,可以少走很多的冤枉路,可以快速增长自己的能力和水平,但后续就要求自己自主的学习,因为别人的路线毕竟是别人的,不可能完全的适合自己的,但入门系列是每一个程序员或爱好算法的同学的必经之路,入门系列就是基础阶段,只有将基础打好,后面才能走的更远更好。在完成入门系列专项训练之后,我将自己做的题和做题过程中遇到的问题及解题思路总结成笔记。
记得上数据结构的时候老师说过,数据结构好比是武林高手的内功,往往刚修炼的时候内功比较的弱,但当我们持之以恒的练习,我们终将练就一身内功成就宗师。加油!
循环结构:
1.洛谷 p5718 java 找最小值
AC代码:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];//定义数组
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();//输入相关的数据
}
Arrays.sort(arr);//使用数组自带的升序方法进行数组内的升序排序
System.out.println(arr[0]);
}
}
本题重点:
- 知道并会使用数组的自带方法Arrays.sort()方法;
2.洛谷 p5719 java 分类平均
AC代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
int sum1 = 0;
int sum2 = 0;
int number1 = 0;//给可以被除的数字计数
int number2 = 0;//给不可以被除的数字计数
for (int i = 1;i <= n;i++){
if(i % k ==0){
//能被k整除
number1++;
sum1 += i;
}else {
number2++;
sum2 += i;
}
}
float aver1 = sum1 / (float)number1;
float aver2 = sum2 / (float)number2;
//使用String.format来保留一位小数,同时可以使用printf;
System.out.print(String.format("%.1f",aver1) + " " + String.format("%.1f",aver2));
}
}
本题重点:
- for循环的遍历起始和结束
- 中间计数变量
- 保留一位小数:使用String.format或则是printf
3.洛谷 p5720 java 一尺之锤
AC代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//输出初始数据
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int count = 0;//计数变量
while(a > 0){
//当a大于零的时候一直循环
a =a/2; //每一次循环都除以2,int类型自动向下取整
count++;//累加
}
System.out.println(count);
}
}
本题重点:
- 循环条件的正确书写
- int类型自动向下取整,那向上取整呢?嘿嘿,向上取整是Math.ceil()
4.洛谷 p5721 java 数字直角三角形
AC代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = 1;//输出的数字从1开始
for (int i = 0; i < n; i++) {
//控制层级
for (int j = i; j < n ; j++) {
//每一层级输出数据个数
System.out.printf("%02d",m);//输出规定的2位整数,一位的前面补0;
m++;//输出的数字
}
System.out.println();
}
}
}
本题重点:
- 输出变量的起始数值,
- 双层for循环,第一层控制层级,第二层控制每一层输出几个数据
- 使用printf输出规定的数据。
5.洛谷 p1980 java 计数问题
AC代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int x = sc.nextInt();
int b,c,t = 0;
for