#include <iostream>
#include <algorithm>
using namespace std;
void DFS(int stop,int visited[10]);
int arr[10];
int result[10];
int n=0;
int m=0;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m;
for(int i=0; i<n; i++)
{
cin>>arr[i];
}
sort(arr,arr+n);
int visited[10]={0};
DFS(0,visited);
return 0;
}
void DFS(int stop,int visited[10])
{
int temp[10];
for(int i=0; i<n; i++)
{
for(int i=0; i<10; i++)
{
temp[i]=visited[i];
}
int k=0;
if(visited[i]==0)
{
result[stop]=arr[i];
temp[i]=1;
k=1;
}
if(stop+1<m&&k==1)
{
DFS(stop+1,temp);
}
else if(k==1)
{
for(int i=0; i<m; i++)
{
cout<<result[i]<<" ";
}
cout<<'\n';
}
}
}
#include <iostream>
#include <algorithm>
using namespace std;
void DFS(int stop);
int arr[10];
int n=0;
int m=0;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m;
for(int i=0; i<n; i++)
{
cin>>arr[i];
}
sort(arr,arr+n);
DFS(0);
return 0;
}
int result[10];
void DFS(int stop)
{
for(int i=0; i<n; i++)
{
int k=0;
result[stop]=arr[i];
for(int i=0; i<=stop; i++)
{
for(int j=i+1; j<=stop; j++)
{
if(result[i]==result[j])
{
k=1;
}
}
}
if(stop+1<m&&k==0)
{
DFS(stop+1);
}
else if(k==0)
{
for(int i=0; i<m; i++)
{
cout<<result[i]<<" ";
}
cout<<'\n';
}
}
}
#include <iostream>
#include <algorithm>
using namespace std;
void DFS(int stop);
int arr[10];
int result[10];
int visited[10]={0};
int n=0;
int m=0;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m;
for(int i=0; i<n; i++)
{
cin>>arr[i];
}
sort(arr,arr+n);
DFS(0);
return 0;
}
void DFS(int stop)
{
for(int i=0; i<n; i++)
{
int k=0;
if(visited[i]==0)
{
result[stop]=arr[i];
visited[i]=1;
k=1;
}
if(stop+1<m&&k==1)
{
DFS(stop+1);
visited[i]=0;
}
else if(k==1)
{
for(int i=0; i<m; i++)
{
cout<<result[i]<<" ";
}
cout<<'\n';
visited[i]=0;
}
}
}
순열을 만드는 문제이다.
자꾸 시간초과가 떠서 뭐가 문제지 하고 다양한 방법으로 접근해 봤다.(그래... 시간초과가 날 수가 없는데)
그냥 cout<<endl;로 써서 시간초과가 발생한 것이었다. 하;; cout<<'\n'으로 작성해야 한다.

'백준 > 백트래킹' 카테고리의 다른 글
[백준] C++ 15663번(N과 M (9)) (0) | 2024.07.08 |
---|