CF 712C

题目:

将一个等边三角形变化成另一个等边三角形,每次改变一条边的边长,问在保证变化过程中三角形仍然是一个三角形的前提下,需要进行几次变换。

题解:

贪心。

每次将最小的边长更新成最大的两条边长和-1即可。

#include<iostream>
#include<algorithm>
using namespace std;

int arr[3];

int main(){
    int from,to;
    cin>>to>>from;
    arr[0]=arr[1]=arr[2]=from;
    sort(arr,arr+3);
    int cnt=0;
    while(arr[2]!=to){
        arr[0]=arr[2]+arr[1]-1;
        if(arr[0]>to) arr[0]=to;
        sort(arr,arr+3);
        cnt++;
    }
    cout<<cnt+2<<endl;
}

猜你喜欢

转载自blog.csdn.net/mengwuyaaa/article/details/80198356