for(int i = 1; i <= 1e6; i ++)//枚举的转化率V
{
bool flag = true;//标记一下当前的V是否合法
for(int j = 0; j < n; j ++)
{
if(b[j] != (a[j] / i))
//这里把任一(第j条)不合法的v去掉,留下N条数据全合法的吗?
假设第j条所枚举的v被判定为合法,则将其输出,跳出最外层循环。
(❌) 准确的说是凡遇到不合法的v都会继续内层循环,判断此v
是否满足所有(n-1)条,若满足则继续内层循环直到(n-1)次,如 遇任意一条不满足则跳出内层循环,判断一个v(i+1个)是否符合全 部,若符合全部条则将其输出,并跳出最外层循环。
首先此合法v是该条最小合法v值,是否意味着它是所有条合法且最小 v 值? 答案是否,它会继续循环直到n-1次,若此v全部条目均合 法,则将其输出,否则将枚举下一个v进行判断。
还是把全部(n-1条)不合法的v去掉,余下的是合法的v? 是。
来模拟一下运行 b[0] != (a[0] / 1) 假设此时b是2 a是3 显然3/1=3
2=3/v 2=<3/v<3 1<v<=1.5 v 若取整无合法v继续判断内循环
直到n-1次跳出内循环,判断下一个v是否全部合法,如全部合法则输出
综上简单来说此内循环会判断n-1条此v是否全部合法,全部合法则标 记并跳出内循环,循环外if通过标记将合法v输出,并通过break函数跳 出最外层for循环。
{
flag = false;
break;
}
}
if(flag)
{
cout << i << " ";
break;
}
}