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

ACdream 1024

編輯:C++入門知識

bfs可以過的,只是我太粗心了,把num寫成step了,然後一直錯,找了2個多小時,真心好郁悶,害的後來沒心情做題目了
[cpp] 
/**************************************************************
    Problem: 1024
    User: yp0408100207
    Language: C++
    Result: Accepted
    Time:670 ms
    Memory:1884 kb
****************************************************************/ 
 
#include<iostream> 
#include <cmath> 
#include <cstdio> 
#include <queue> 
#include <string.h> 
using namespace std; 
  
int b; 
bool flag[100003]; 
  
struct N 

    int num,step; 
}; 
  
int bfs(int a) 

    memset(flag,false,sizeof(flag)); 
    N now,next; 
    now.num=a; 
    now.step=0; 
    queue<N> q; 
    q.push(now); 
    int i; 
    int temp; 
    while(!q.empty()) 
    { 
        now=q.front(); 
        if (now.num==b) 
        { 
            return now.step; 
        } 
        q.pop(); 
        temp=(int)sqrt((double)now.num); 
        for (i=1;i<=temp;i++) 
        { 
            if(now.num%i) continue; 
  
            int aa=now.num/i; 
              
            next.num=now.num+i; 
            if(next.num<=b&&!flag[next.num]) 
            { 
                next.step=now.step+1; 
                flag[next.num]=true;//flag[next.step]=true;哎,弄了好久 
                q.push(next); 
            } 
  
            if(aa==i) continue; 
  
            next.num=now.num+aa; 
            if(next.num<=b&&!flag[next.num]) 
            { 
                next.step=now.step+1; 
                flag[next.num]=true; 
                q.push(next); 
            } 
        } 
    } 
    return -1; 

  
int main() 

    int a; 
    while (scanf("%d%d",&a,&b)!=EOF) 
    { 
        if(a==b) 
        { 
            printf("0\n"); 
            continue; 
        } 
        if (a>b) 
        { 
            printf("-1\n"); 
            continue; 
        } 
        printf("%d\n",bfs(a)); 
    } 
    return 0; 

 

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