文章
1
粉丝
232
获赞
0
访问
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這一輸入好像都給不出正確的答案。
登录后发布评论
暂无评论,来抢沙发