题目:
将一个等边三角形变化成另一个等边三角形,每次改变一条边的边长,问在保证变化过程中三角形仍然是一个三角形的前提下,需要进行几次变换。
题解:
贪心。
每次将最小的边长更新成最大的两条边长和-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;
}