程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ 3278(BFS-搜索范圍)

POJ 3278(BFS-搜索范圍)

編輯:C++入門知識

這題是BFS水的
主要是范圍
0<=n,k<=100000  但是有可能搜到200000……
半天功夫才A.

[delphi] 
program P3278; 
const 
   maxn=200000; 
var 
   n,k,i,j:longint; 
   q,deep:array[1..maxn] of longint; 
   b:array[0..maxn] of boolean; 
procedure add(x:longint); 
begin 
   if not(b[x]) then 
   begin 
      b[x]:=true; 
      inc(j); 
      q[j]:=x; 
      deep[j]:=deep[i]+1; 
   end; 
end; 
begin 
   read(n,k); 
   i:=1; 
   j:=1; 
   fillchar(b,sizeof(b),false); 
   b[n]:=true; 
   q[1]:=n;deep[1]:=0; 
   if n=k then 
   begin 
      writeln('0'); 
      halt; 
   end; 
 
 
   while i<=j do 
   begin 
      if (q[i]>0) then add(q[i]-1); 
      if b[k] then break; 
      if (q[i]<maxn) then add(q[i]+1); 
      if b[k] then break; 
      if (q[i]*2<maxn) then add(q[i]*2); 
      if b[k] then break; 
      inc(i); 
   end; 
   writeln(deep[j]); 
 
end. 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved