-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathex07.cpp
64 lines (54 loc) · 1.42 KB
/
ex07.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Cho ba hình chữ nhật. Các bạn được phép xoay hình nhưng không được phép xếp chồng lấn lên nhau, hỏi 3 hình chữ nhật đó có thể ghép thành một hình vuông được hay không
// Input: Dòng đầu ghi số bộ test. Mỗi test có ba dòng, mỗi dòng ghi hai số nguyên dương là chiều rộng và chiều cao của hình chữ nhật (các số đều không quá 100).
// Output: Ghi ra YES nếu có thể tạo thành hình vuông, NO nếu không thể.
// Ví dụ:
#include <bits/stdc++.h>
using namespace std;
int a[6];
int pos[6];
int n = 6,k=3,sum=0;
bool ok = false;
void init(){
for(int i = 1;i<=n;i++){
pos[i]=i;
}
}
void display(){
for(int i =1;i<=k;i++){
cout<<pos[i]<<" ";
}
cout<<endl;
}
void backTrack(int i){
for(int j = pos[i-1]+1;j<=n-k+i;j++){
pos[i]=j;
if(i==k){
int s=0;
for(int i = 1;i<=k;i++){
s+=a[pos[i]];
}
if(s==sum-s){
ok = true;
cout<<"YES"<<endl;
return;
}
}
else backTrack(i+1);
}
}
int main(){
int t;
cin>>t;
while(t--){
init();
for(int i = 1;i<=6;i++){
cin>>a[i];
sum+=a[i];
}
backTrack(1);
if(!ok) cout<<"NO"<<endl;
ok = false;
sum = 0;
}
return 0;
}