Tin học phương pháp quay lui

yauotsua

Học sinh
Thành viên
13 Tháng mười hai 2015
46
7
44
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Giúp em code hoặc thuật toán của 2 bài này ạ?
1/ Hãy in tất cả các cách điền 'X' hoặc 'O' vào bảng gồm 4 hàng, 4 cột sao cho không có 4 chữ giống nhau nằm cùng hàng hoặc cùng cột hoặc cùng đường chéo?
2/ Cho n, dãy số nguyên (1<=n<=30) và 2 số nguyên k,m. Hãy in ra tất cả các cách chọn ra k phần tử của dãy sao cho tổng các phần tử được chọn =m.
 

khoivudang03@gmail.com

Học sinh mới
Thành viên
20 Tháng mười 2018
5
1
6
2/
#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long a[100000],s=0,c[100000],dem=0;
void xuat()
{ for(int i=1;i<=n;i++)
if(a==1)
{
cout<<c<<" ";

}


}
void quay(int i)
{ for(int j=0;j<=1;j++)
{ a=j;
s=s+j*c;
if(i==n) {
if(s==m)
xuat();
}
else quay(i+1);
s=s-j*c;
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>c;

quay(1);
cout<<"-1";
}
 

khoivudang03@gmail.com

Học sinh mới
Thành viên
20 Tháng mười 2018
5
1
6
#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long a[100000],s=0,c[100000],dem=0,t[1000];
void xuat()
{ for(int i=1;i<=n;i++)
if(a==1)
{
cout<<c;
}
}
void quay(int i)
{ for(int j=0;j<=1;j++)
{ a=j;
s=s+j*c;
if(i==n) {
if(s==m)
xuat();
}
else quay(i+1);
s=s-j*c;
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>c;
quay(1);
}
 
Top Bottom