c++只有80分,求大佬。
查看原帖
c++只有80分,求大佬。
983702
lrj3247楼主2023/7/12 16:30

这里我的思路是先贪心,最后6步时在搜索,不会超时,但WA了两个。不知道哪里错了。

c++代码

#include <bits/stdc++.h>
using namespace std;
int m,s,t,sum=INT_MAX,num,now,x;
bool flag=false;
void dfs(int step,int w,int ma)
{
	if(step>=t&&w<=s)
	{
		num=max(w,num);
		return ;
	}
    else if(w>s)
    {
    	flag=true;
    	sum=min(sum,step);
    	return ;
	}
	if(ma>=10)
	dfs(step+1,w+60,ma-10);
	else
	{
		dfs(step+1,w,ma+4);
	    dfs(step+1,w+17,ma);
	}
}
int main()
{
	cin>>m>>s>>t;
	while(t-now>6)
	{
		++now;
		if(m>=10)
		{
			m-=10;
			x+=60;
		}
		else
		{
			m+=4;
		}
	}
	dfs(now,x,m);
	if(flag==true)
	{
		cout<<"Yes"<<endl<<sum;
	}
	else
	{
		cout<<"No"<<endl<<num;
	}
	return 0;
}

求大佬帮助,万分感谢。

2023/7/12 16:30
加载中...