Codeforces Round #370 (Div. 2) C. Memory and De-Evolution【dfs+想法】

剛開始想從(x,x,x)進過一些方法得到(y,y,y),但是想了好多方法都不行。後來發現反過來想比較簡單從(y,y,y)開始,按照三角形的要求得到下一個爲(2*y-1,y,y),然後一直這樣做下去。最後當三角形邊最小的長度大於x時,就可以結束了。

#include<bits/stdc++.h>
using namespace std;
int x,y,ans1,ans;
void dfs(int a,int b,int c)
{
    //printf("%d %d %d %d\n",ans,a,b,c);
    if(c>=x) return ;
    c=b+a-1;
    if(a<c) swap(a,c);
    if(a<b) swap(a,b);
    if(b<c) swap(b,c);
    ans++;
    dfs(a,b,c);
}
int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%d%d",&x,&y);
    ans=0;
    dfs(y,y,y);
    printf("%d\n",ans);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章