湖北建设银行官方网站首页,wordpress淘点金插件,可信赖的顺的网站建设,辽宁建设工程信息网官网平台一、问题描述 二、解答
关键#xff1a;判断是否发生苹果掉落#xff0c;使用flag[]数组来标记#xff0c;1为掉落#xff0c;0为没有掉落#xff0c;这样也是为了后续比较连续三棵树是否掉落
误区#xff1a;用最后一次正数#xff08;即最后一次统计苹果个数#x…一、问题描述 二、解答
关键判断是否发生苹果掉落使用flag[]数组来标记1为掉落0为没有掉落这样也是为了后续比较连续三棵树是否掉落
误区×用最后一次正数即最后一次统计苹果个数第一次统计即ai1
例6 75 -5 68 -3 65 -4 60
这里除了第一个正整数后面的正整数都要与前一个正整数减去之间的疏果个数相比较检测到小于即发生落果设置flag[i]1,判断已经落果后不能退出循环统计下一棵树也不能直接D。因为这里是边输入边统计而且还要继续计算出最后该棵苹果树的苹果个数。直接退出循环后输入和统计都中断了 D也只能写在for循环外面不然会重复计数。
代码省略了头文件和main
int N;cin N;//苹果树的棵数int m 0;int T 0;int D 0;int E 0;//先全部清零int a[1001] { 0 };int flag[1001] { 0 };//检测是否有苹果掉落int num 0;//记录每一颗苹果树的当前个数for (int i 1; i N; i){cin m;//本行后面的整数个数for (int j 1; j m; j){cin a[j];if (j 1) {num a[j];}else {if (a[j] 0){if (a[j] num)
//比较新统计的苹果个数a[j]和前一个统计减去之间的疏果个数{flag[i] 1;}num a[j];}else {num a[j];}}}T num;//D只能写在for循环里面否则会重复计数if (flag[i] 1) {D;}}//判断连续3棵树是否都发生掉落//因为是圈型所以考虑到两个特殊情况N-1N,1;N,1,2for (int i 1; i N - 2; i)//一般情况{if (flag[i] 1 flag[i 1] 1 flag[i 2] 1){E;}}//两种特殊情况if (flag[N - 1] 1 flag[N] 1 flag[1] 1){E;}if (flag[N] 1 flag[1] 1 flag[2] 1){E;}//方式2用取余符号,只能得70分因为在这里i是从1开始的i从0开始就不会这样
// for(int i1;iN;i)
// {
// if(flag[(i1)%N]1flag[(i2)%N]1flag[(i3)%N]1)
// {
// E;
// }
// }cout T D E;
return 0;