算法复习,蓝桥杯真题一:
前N行用scanner.nextLine()读取,后面的字符串用scanner.next()分别读取。
注意事项:
输出时str[k]要从k= 1开始,否则会多输出一行空格,报格式错误,因为输入的第一行n不用输出且没有读取到str[]中。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int i = 0;
int k = 1;
String str[] = new String[1000];
while(scanner.hasNext()){
for(; i < n+1; i++){
str[i] = scanner.nextLine();
}
str[i] = scanner.next();
i++;
while(k < i){
System.out.println(str[k]+"\n");
k++;
}
}
}
}
蓝桥杯真题二:
这个挺好理解的
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int f=1;//记录每行第一个数
int counter=n;//记录每行个数
for(int i=1;i<=5;i++) {
int t=0;
f=f+i-1;//每行数等于上一行的行数+上一行首元素
t=f;
System.out.print(f+" ");
for(int j=1;j<counter;j++) {
t=t+j+i;//每行的元素值
System.out.print(t+" ");
}
counter--;//每行元素值减1
System.out.println();
}
}
}
14年蓝桥杯分糖果题:
1,首先将原本糖果个数和要给左边孩子的糖果个数分为两个数组分别为ar1[i]和ar2[i],ar2[i]为ar1[i]的1/2,ar1[i]变为1/2表示有一半糖果被移走,为下一步与左边孩子分
到的糖果ar2[i]进行相加做好铺垫。
2,第一个循环把自己要分给左边孩子的糖储存进ar2[i]中,然后自身的值/2,不过因为 小朋友是围圈坐在一起的,所以最后一位孩子要给第一位孩子糖果,所以要设置个if,当到最后一位时候,让他去给第一位孩子糖果。
3,第二个循环是加上旁边孩子给的糖果,因为我们把要拿到的糖果储存到了ar2里面,所以这里直接相加就好。
4、最后判断糖果的个数,糖果个数为奇数孩子的糖果数目+1,使其变为偶数。然后判断孩子手里的糖是否相等,因为我们在循环开头就让boo = false,这样到后面判断时候,孩子手里面的糖不相等的时候就让boo = true 继续执行。如果相等就会停止循环。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] ar1 = new int[n];
int[] ar2 = new int[n];
for (int i = 0; i < n; i++) {
ar1[i] = sc.nextInt();
}
boolean boo = true;
int sum = 0; // 补发的棒棒糖
while (boo){
boo = false;
for (int i = 0; i < n; i++) { // 把要给左边小朋友的糖保存在ar2里面,然后自身糖果减半 = ar1[i]/2。
if (i == n-1){
ar2[0] = ar1[i]/2;
ar1[i] = ar1[i]/2;
}else {
ar2[i+1] = ar1[i]/2;
ar1[i] = ar1[i]/2;
}
}
for (int i = 0; i < n; i++){ // 把旁边小朋友给的糖果加上
ar1[i] += ar2[i];
}
for (int i = 0; i < n; i++) { // 判断小朋友手里的糖果是否为奇数,是的话sum加一
if (ar1[i]%2 != 0){
ar1[i] += 1;
sum += 1;
}
if (ar1[0] != ar1[i]){ // 判断小朋友手里面的糖果是否相等
boo = true;
}
}
}
System.out.println(sum);
}
}