목록알고리즘 풀이 (63)
하다보니
/* N개의 자연수와 자연수 M이 주어졌을 때, N개의 자연수 중에서 M개를 고른 수열. */ #include #include using namespace std; int board[10]; int n, m; int arr[10]; bool isused[10]; void func(int k) { if (k == m) { for (int i = 0; i m; for (int i = 0; i > board[i]; sort(board, board + n); func(0); }
/* n까지 자연수 중 m개를 고른 수열 같은 수를 여러 번 골라도 된다. 같은 수를 골라도 되고 비내림차순이어야 한다. */ #include using namespace std; int n, m; int arr[10]; void func(int k) { if (k == m) { for (int i = 0; i < m; i++) { cout
/* 1부터 n까지 m개를 중복을 허용해서 고른다. */ #include using namespace std; int n, m; int arr[10]; void func(int k) { if (k == m) { for (int i = 0; i < m; i++) { cout m; func(0); }
/* 1부터 n까지 자연수 중 중복없이 m개 고른 수열, 고른 수열은 오름차순이어야 한다. */ #include using namespace std; int n, m; int arr[10]; bool isused[10]; void func(int k) { if (k == m) { for (int i = 0; i < m; i++) { cout m; func(0); }
#include using namespace std; int arr[30]; int n, s; int cnt = 0; void func(int cur,int tot) { if (cur == n) { if (tot == s) { cnt++; } return; } func(cur + 1, tot); func(cur + 1, tot + arr[cur]); } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> s; for (int i = 0; i > arr[i]; func(0, 0); if (s == 0) cnt--; cout
#include using namespace std; int board[10][10]; int n, m; int arr[10]; bool isused[10]; void func(int k) { if (k == m) { for (int i = 0; i < m; i++) { cout m; func(0); }
#include #include #include using namespace std; int main() { int n; int ans = 0; cin >> n; while (n--) { string a; cin >> a; stack s; for (auto c : a) { if (!s.empty() && s.top() == c)s.pop(); else s.push(c); } if (s.empty())ans++; } cout
#include #include #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); while (true) { stack s; bool isValid = true; string a; getline(cin, a); if (a == ".")break; for (auto c : a) { if (c == '(' || c == '[')s.push(c); else if (c == ')') { if (s.empty() || s.top() != '(') { isValid = false; break; } s.pop(); } else if (c == ']') { if (s.empty() || s.top() != '[') { isVa..
''' 다양한 크기의 정사각형 하얀색 또는 파란색 색종이를 만들려고 한다. 잘린 종이가 모두 하얀색이나 파란색으로 칠해져있거나 하나의 정사각형 칸이 되어 더이상 자를 수 없을 때까지 반복. ''' n=int(input()) board=[] num=[0]*2 def check(x,y,n): for i in range(x,x+n): for j in range(y,y+n): if board[x][y]!=board[i][j]:return False return True def func(x,y,z): if check(x,y,z): num[board[x][y]]+=1 return n=z//2 for i in range(2): for j in range(2): func(x+i*n,y+j*n,n) for _ in ra..
/* 상범 빌딩에서 탈출하는 가장 빠른 길. 각 변의 길이가 1인 정육면체로 이루어져 있다. 금으로 이루어져 자나갈 수 없거나. 비어있어서 지나갈 수 있다. 각 칸에서 인접한 6개의 칸으로 1분의 시간을 들여 이동할 수 있다. 대각선으로 이동하는 것은 불가능하다. 그리고 상범 빌딩의 바깥 면도 모두 금이라 출구로만 탈출 가능하다. 상범 빌딩 탈출 가능? 얼마나 걸림? 금은 #이고 비어있는 칸은 . 시작 지점은 S 탈출구는 E */ #include using namespace std; int dx[6] = { 0, 0, 1, -1, 0, 0 }; int dy[6] = { 1, -1, 0, 0, 0, 0 }; int dh[6] = { 0, 0, 0, 0, 1, -1 }; int main() { while (..