CCF基础1、2编程题。比较适合准备数据分析的同学拿来练习的编程笔试题。
可以拿来Warm Up。
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); //苹果个数
int m = scanner.nextInt(); //疏果个数
int t = 0;// 总数剩下的
int k = 0; // 苹果树编号
int p = 0; //疏果格式
int tempk = 0; //临时k变量
for (int i = 0; i < n; i++) {
int simple = scanner.nextInt();
t += simple;
tempk++;
int tempp = 0;
for (int j = 0; j < m; j++) {
int filter = scanner.nextInt();
tempp -= filter;
t += filter;
}
if (tempp > p) {
p = tempp;
k = tempk;
}
}
System.out.println(t + " " + k + " " + p);
}
}
这题只要顺着他的思路下来就可以bug free了。
本题难度提升,需要计算发生掉落和连续三棵树发生苹果掉落的情况。
编程注意点:
1.在输入ai1的时候,因为是每颗果树的第一个输入,代表刚开始果树的苹果含量,所以可以写在第二个循环的前面和第一个循环的里面,所以第二个循环就要从1开始。
2.因为要统计所有的苹果含量,所以要在每次统计完一个果树之后保留一个临时变量最后加到t(所有苹果含量)当中。
3.最后计算连续三棵树的时候用用apple[k]&apple[p]&apple[q]这个表达式来判断,值得注意的是n、1、2 和n-1、n、1的情况。
代码如下
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); //苹果树棵树
int t = 0; //总苹果数量
int d = 0; //发生掉落苹果树数量
int e = 0; //连续三棵掉落的苹果树
int apple[] = new int[n];
for (int i = 0; i < n; i++) {
int m = scanner.nextInt();
int temptotal = 0;
int flag = 0;
int firstrecord = scanner.nextInt();
temptotal += firstrecord;
for (int j = 1; j < m; j++) {
int filter = scanner.nextInt();
if (filter <= 0) {
temptotal += filter;
} else {
if (filter < temptotal) {
flag = 1;
temptotal = filter;
}
}
}
t += temptotal;
if (flag == 1) {
apple[i] = 1;
d++;
}
}
for (int k = 0; k < n; k++) {
int p = k + 1;
int q = k + 2;
if (p >= n) {
p -= n;
}
if (q >= n) {
q -= n;
}
if ((apple[k] & apple[p] & apple[q]) == 1) {
e++;
}
}
System.out.println(t + " " + d + " " + e);
}
}