#include <stdio.h>
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
 
int num[10];
int visited[10];
 
char sign[9];
int signNum;
 
string Max = "-1";
string Min = "9999999999";
 
int check(int idx)
{
    if(sign[idx] == '<')
    {
        if(num[idx] < num[idx+1])
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    else if(sign[idx] == '>')
    {
        if(num[idx] > num[idx+1])
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}
 
void permutation(int cnt)
{
    if(cnt == signNum+1)
    {
        for(int i = 0; i < cnt-1; i++)
        {
            if(check(i) == 0)
            {
                return;
            }
        }
        
        string val;
        
        for(int i = 0; i < cnt; i++)
        {
            val += to_string(num[i]);
        }
        
        if(val > Max)
        {
            Max = val;    
        }
        
        if(val < Min)
        {
            Min = val;
        }
        
        return;
    }
    
    for(int i = 0; i <= 9; i++)
    {
        if(visited[i] == 0)
        {
            num[cnt] = i;
            visited[i] = 1;
            permutation(cnt+1);
            visited[i] = 0;    
        }
    }
}
 
int main(void)
{
//    freopen("B2529_input.txt", "r", stdin);
    
    scanf("%d"&signNum);
    for(int i = 0; i < signNum; i++)
    {
        scanf(" %c"&sign[i]);
    }
    
    permutation(0);
 
    cout << Max << endl;
    cout << Min << endl;
    
    return 0;
}
cs
#include <stdio.h>
 
int arr[100];
int input[100];
int n, k;
 
void combination(int cnt, int idx)
{    
    if(cnt == k)
    {
        for(int i = 0; i < k; i++)
        {
            printf("%d ", arr[i]);
        }
        printf("\n");
        return;
    }
    
    // 중복값 유무 확인 
    int used[10000= {0};
    
    for(int i = idx; i < n; i++)
    {
        if(used[input[i]] == 0)
        {
            used[input[i]] = 1;
            arr[cnt] = input[i]; 
            combination(cnt+1, i);
        }
    }
}
 
int main(void)
{
    scanf("%d %d"&n, &k);
    for(int i = 0; i < n; i++)
    {
        scanf("%d"&input[i]);
    }
    
    // input 버블정렬 -> 사전순으로 출력하기 위해서 
    for(int i = n-1; i > 0; i--)
    {
        for(int j = 0; j < i; j++)
        {
            if(input[j] > input[j+1])
            {
                int temp = input[j];
                input[j] = input[j+1];
                input[j+1= temp;
            }
        }
    }
    
    combination(00);
        
    return 0;
}
 
cs
#include <stdio.h>
 
int arr[100];
int input[100];
int n, k;
 
void combination(int cnt, int idx)
{    
    if(cnt == k)
    {
        for(int i = 0; i < k; i++)
        {
            printf("%d ", arr[i]);
        }
        printf("\n");
        return;
    }
    
    // 중복값 유무 확인 
    int used[10000= {0};
    
    for(int i = idx; i < n; i++)
    {
        if(used[input[i]] == 0)
        {
            used[input[i]] = 1;
            arr[cnt] = input[i]; 
            combination(cnt+1, i+1);
            arr[cnt] = 0;    
        }
    }
}
 
int main(void)
{
    scanf("%d %d"&n, &k);
    for(int i = 0; i < n; i++)
    {
        scanf("%d"&input[i]);
    }
    
    // input 버블정렬 -> 사전순으로 출력하기 위해서 
    for(int i = n-1; i > 0; i--)
    {
        for(int j = 0; j < i; j++)
        {
            if(input[j] > input[j+1])
            {
                int temp = input[j];
                input[j] = input[j+1];
                input[j+1= temp;
            }
        }
    }
    
    combination(00);
        
    return 0;
}
 
cs
#include <stdio.h>
 
int arr[100];
int input[100];
int n, k;
 
void combination(int cnt, int idx)
{    
    if(cnt == k)
    {
        for(int i = 0; i < k; i++)
        {
            printf("%d ", arr[i]);
        }
        printf("\n");
        return;
    }
    
    // 중복값 유무 확인 
    int used[10000= {0};
    
    for(int i = idx; i < n; i++)
    {
        if(used[input[i]] == 0)
        {
            used[input[i]] = 1;
            arr[cnt] = input[i]; 
            combination(cnt+1, i+1);
        }
    }
}
 
int main(void)
{
    scanf("%d %d"&n, &k);
    for(int i = 0; i < n; i++)
    {
        scanf("%d"&input[i]);
    }
    
    // input 버블정렬 -> 사전순으로 출력하기 위해서 
    for(int i = n-1; i > 0; i--)
    {
        for(int j = 0; j < i; j++)
        {
            if(input[j] > input[j+1])
            {
                int temp = input[j];
                input[j] = input[j+1];
                input[j+1= temp;
            }
        }
    }
    
    combination(00);
        
    return 0;
}
 
cs
#include <stdio.h>
 
int arr[100];
int input[100];
int visited[100];
int n, k;
 
void permutation(int cnt)
{
    if(cnt == k)
    {
        for(int i = 0; i < k; i++)
        {
            printf("%d ",arr[i]);
        }
        printf("\n");
        return;
    }
    
    // 중복값 유무 확인 
    int used[10000= {0};
    
    for(int i = 0; i < n; i++)
    {    
        if(visited[i] == 0 && used[input[i]] == 0)
        {
            used[input[i]] = 1;
            arr[cnt] = input[i];
            visited[i] = 1;
            permutation(cnt+1);
            visited[i] = 0;
        }
    }
}
 
int main(void)
{
    scanf("%d %d"&n, &k);
    for(int i = 0; i < n; i++)
    {
        scanf("%d"&input[i]);
    }
    
    // input 버블정렬 -> 사전순으로 출력하기 위해서 
    for(int i = n-1; i > 0; i--)
    {
        for(int j = 0; j < i; j++)
        {
            if(input[j] > input[j+1])
            {
                int temp = input[j];
                input[j] = input[j+1];
                input[j+1= temp;
            }
        }
    }
    
    permutation(0);
        
    return 0;
}
 
cs

+ Recent posts