文章

1

粉丝

232

获赞

0

访问

4.4k

头像
找不出錯誤求解
P1850 清华大学2020年机试题
发布于2022年1月19日 12:36
阅读数 4.4k

説一下我的思路,就是對一行有兩個以上的行,找不爲0的兩項,爲了方便就找了最前面和最後面的兩項,結果始終無法通過。

int lo, hi;
for (lo = 0; lo < m; lo++)
    if (a[i][lo])
        break;
for (hi = m - 1; hi > lo; hi--)
    if (a[i][hi])
        break;
ll x = (a[i][hi] - a[i][lo]) / (hi - lo);

而改換成找一行的前兩個不爲0的項,代碼就瞬間通過,而且對之前沒通過的數據輸出發現兩個計算得到的等差數列的差值x不同。

int lo = -1, hi = -1;
for (int j = 0; j < m; j++)
    if (a[i][j])
    {
        if (lo == -1)
            lo = j;
        else
        {
            hi = j;
            break;
        }
    }
ll x = (a[i][hi] - a[i][lo]) / (hi - lo);

請問一下究竟是我的代碼邏輯有問題還是什麽情況呢(只給了有問題的重要部分,免得太繁冗,希望表述清楚了,有需要可以補充其他代碼)?而且數據是不是有點兒弱,許多ac的代碼對3 3 1 0 0 0 4 0 3 0 9這一輸入好像都給不出正確的答案。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发