2021.10.30 出差错题目 一直在排查mod n的问题,最终还是用朴素方法 位置是1 - n 不是 0 到 n-1 不能用mod运算 比如1+4modn 就坏了

其次是局部变量 maxtime 要在第二层循环时进行初始化,不让还是上一轮结果。

#include<cmath>
using namespace std;
int n,m,a[1010];
int main()
{
    while(cin >> n >> m){
        //n--;
        for(int i =0;i <m;i++){
            cin >> a[i];
            //a[i]--;
        }
        int maxtime =0,mintime = 100500,step;
        for(int i = 1;i <=n;i++){
            int maxtime = 0;//坏事一步
            for(int j =0;j<m;j++){//每组最大时间
                //step=min((a[j]+i)%n,abs(a[j]-i));
                     step =abs(a[j]-i);
                     if(step >= n/2) step = n-step;
                if(step >maxtime)
                    maxtime=step;
            }
            if(maxtime < mintime) mintime =maxtime;
        }
        cout << mintime <<endl;
    }
    return 0;
}

注意第14行是不行的。

2021.10.30 重新考虑了 0 - n-1写法 无果 算了 就这样吧

参考牛客本题大佬题解