请大佬看看,哪错了
查看原帖
请大佬看看,哪错了
1179134
weixiaobei楼主2024/12/1 15:58
#include <bits/stdc++.h>
using namespace std;
int n,m,num[101][2],nums[101][2];
void dfs(int number){
	if(number == m){
		cout<<"YES"<<endl;
		for(int i = 1;i<=n;i++){
			if(nums[i][0] == '-1'){
				cout<<"T";
			}else{
				cout<<"H";
			}
		}
		return ;
	}
	for(int i =1;i<=n;i++){
		if(nums[i][0] != -1){
			if(number+num[i][0] <= m){
				number += num[i][0];
				nums[i][0] = -1;
				dfs(number-num[i][0]);
				nums[i][0] = 0;
			}else{
				dfs(number-num[i-1][0]);
				dfs(number-num[i-1][1]);
			}
		}if(nums[i][1] != -1){
			if(number+num[i][1] <= m){
				number += num[i][1];
				nums[i][0] = -1;
				dfs(number-num[i][0]);
				nums[i][1];
			}else{
				dfs(number-num[i-1][0]);
				dfs(number-num[i-1][1]);
			}
		}
	}
	cout<<"NO";
	return ;
}
int main(){
	cin>>n;
	cin>>m;
	for(int i = 1;i<=n;i++){
		cin>>num[i][0]>>num[i][1];
	}
	dfs(1);
	return 0;
} 
2024/12/1 15:58
加载中...