| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:贴份c++代码,还是要注意代码的严谨性In Reply To:贴份c++代码,还是要注意代码的严谨性 Posted by:a280920481 at 2018-11-20 00:27:48 > #include <iostream>
> using namespace std;
>
> struct Situ
> {
> int n, s;
> }si[400005];//实现队列
>
> bool bfs[400005];// bfs 数组
>
> int main()
> {
> int N, K, ans = 1 << 30, qBegin = 0, qEnd = 0;
> Situ m;
>
> cin >> N >> K;
>
> m.n = N;
> m.s = 0;
> si[qEnd++] = m;
>
> while (qEnd > qBegin)
> {
> m = si[qBegin++];
>
> if (m.n == K)
> {
> ans = m.s;
> break;
> }
> else
> {
> if (m.n)//加入对 n == 0 的判定
> {
> if ((!bfs[m.n << 1]) && (m.n < K))//加入对出界的判定
> {
> si[qEnd].n = (m.n << 1);
> si[qEnd++].s = m.s + 1;
> bfs[m.n << 1] = true;
> }
> if (!bfs[m.n - 1])
> {
> si[qEnd].n = (m.n - 1);
> si[qEnd++].s = m.s + 1;
> bfs[m.n - 1] = true;
> }
> }
>
> if ((!bfs[m.n + 1]) && (m.n < K))//加入对出界的判定
> {
> si[qEnd].n = m.n + 1;
> si[qEnd++].s = m.s + 1;
> bfs[m.n + 1] = true;
> }
> }
>
> }
>
> cout << ans << '\n';
>
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator