WHY_987321 @ 2022-10-26 22:33:56
import java.util.Scanner;//主要还是算法的问题,先想明白要怎么做,再动手
//校门外的树
public class Main {
public static void main(String[] args) {
int l;//马路长度
int m;//数据组数
int u,v;
int i,j;//好的代码习惯,先统一定义变量然后输入
int cnt = 0;//代表最后为1的个数 即留下来的树
Scanner scan = new Scanner(System.in);//输入标志
l = scan.nextInt();//读入马路长度和区间数
m = scan.nextInt();
int[] tree = new int[10000];//声明数组 长度为10000 注意是方括号
for(i = 0; i <= l; i++)//第一次循环将所有元素都设置未访问过
{
tree[i] = 0;//先把所有元素都设为未访问过
}
for(i = 0; i < m; i++)//第二次循环读入区间端点
{
u = scan.nextInt();
v = scan.nextInt();
for(j = u; j <= v; j++)//循环将区间内所有的树都设为访问过
{
tree[j] = 1;//这里发现问题:双重循环嵌套时循环变量要用i和j
}
}
for(j = 0; j <= l; j++)//遍历所有树 未访问过则cnt++
{
if(tree[j] == 0)
{
cnt++;
}
}
System.out.println(cnt);
}
}
by zhijinzeng @ 2022-11-10 11:53:30
你是对的,测试点错了9个.
正确代码中,输入:
5 1
1 5;
输出:
1
一共5棵树,把第1到第5全部移走,还有1课???