思路就是标题,代码上传格式比较奇怪,随便看看
参考代码:
#include <bits/stdc++.h>
using namespace std;
const int N=20;
int T,n,ans;
int a[N],b[N],c[N],st[N];
bool d[N];
void dfs(int x,int y,int z)
{
if(z==1)
{
d[x]=1;
}
if(z==n)
{
if(a[x]+b[x]>=y)
{
ans=1;
}
return ;
}
if((a[x]+b[x])<y)
{
return ;
}else if(a[x]<=y&&(a[x]+b[x])>=y)
{
for(int i=1;i<=n;i++)
{
if(d[i]!=1)
{
d[i]=1;
// st[z]=x;
dfs(i,y+c[x],z+1);
// st[z]=0;
d[i]=0;
}
}
}else if(a[x]>y)
{
for(int i=1;i<=n;i++)
{
if(d[i]!=1)
{
d[i]=1;
// st[z]=x;
dfs(i,a[x]+c[x],z+1);
// st[z]=0;
d[i]=0;
}
}
}
if(z==1)
{
d[x]=0;
}
}
int main()
{
cin>>T;
for(int i=0;i<T;i++)
{
ans=0;
cin>>n;
int x=1000000;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i]>>c[i];
}
for(int i=1;i<=n;i++)
{
dfs(i,0,1);
}
if(ans==1)
{
cout<<"YES"<<'\n';
}else
{
cout<<"NO"<<'\n';
}
}
return 0;
}
0.0分
3 人评分
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:821 |
printf基础练习2 (C语言代码)浏览:796 |
最小公倍数 (C语言代码)浏览:1105 |
C二级辅导-温度转换 (C语言代码)浏览:802 |
字符逆序 (C语言代码)浏览:675 |
时间转换 (C语言代码)浏览:697 |
C二级辅导-分段函数 (C语言代码)浏览:790 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:735 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:760 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:507 |