ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

1.

์ฝ”๋“œ:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int isPalindrome(char A[], int n, int i) {
	if (n < 2)
		return 1;
	else if (A[i] != A[n - 1])
		return 0;
	else
		isPalindrome(A, n - 1, ++i);
}

int main() {
	char A[100];
	gets(A);

	printf("%d", isPalindrome(A, strlen(A), 0));
}

 

2.

์ฝ”๋“œ:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void divide(int a, int b, int cnt) {
	if (a < b)
		printf("%d %d", cnt, a);
	else {
		cnt++;
		divide(a - b, b, cnt);
	}
}

int main() {
	int a, b;
	scanf("%d %d", &a, &b);

	divide(a, b, 0);
}

 

3.

 

์ฝ”๋“œ:

#include <stdio.h>

void backtracking(int n);
int check(int x, int y); // ๋นˆ์นธ์— ๋“ค์–ด๊ฐˆ ์ˆซ์ž๊ฐ€ ์Šค๋„์ฟ  ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ ํ•จ์ˆ˜

int sutoku[9][9] = { 0 };
int blank[2][81] = { 0 }; // ๋นˆ ์นธ์˜ ์ธ๋ฑ์Šค ์ €์žฅ (blank[0][n] >>row, blank[1][n] >> column)
int cnt = 0; // ๋นˆ์นธ์˜ ์ด ๊ฐฏ์ˆ˜ ์ €์žฅ
int end = 0; // ์Šค๋„์ฟ  ์™„์„ฑ >> ์žฌ๊ท€ํ•จ์ˆ˜ ํƒˆ์ถœ์‹œ ์‚ฌ์šฉ

int main() {
int b = 0;

for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
scanf("%d", &sutoku[i][j]);

if (sutoku[i][j] == 0) {
blank[0][b] = i;
blank[1][b] = j;
b++;
cnt++;
}
}
}

for (int i = 1; i <= 9; i++) {
sutoku[blank[0][0]][blank[1][0]] = i;
backtracking(0);
if (end == 1)
break;
}

for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
printf("%d ", sutoku[i][j]);
if (j / 8 == 1)
printf("\n");
}
}

return 0;
}

void backtracking(int n) {
int x = blank[0][n], y = blank[1][n];

if (check(x, y) == 0)
return;

if (n == cnt - 1) {
end = 1;
return;
}

for (int i = 1; i <= 9; i++) {
sutoku[blank[0][n + 1]][blank[1][n + 1]] = i;
backtracking(n + 1);
if (end == 1)
return;
}
sutoku[blank[0][n + 1]][blank[1][n + 1]] = 0;
}


int check(int x, int y) {
for (int i = 0; i < 9; i++) { // ๋นˆ์นธ์ด ์žˆ๋Š” ํ–‰ ๊ฒ€์‚ฌ
if (sutoku[x][y] == sutoku[x][i]) {
if (y == i) // ํ˜„์žฌ ๋นˆ์นธ๊ณผ ๊ฐ™์€ ๊ณณ์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ๋Š” return ์•„๋‹˜ >> ๊ฐ™์€ ์œ„์น˜์— ์กด์žฌํ•  ๋•Œ๋Š” ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€๊ธฐ
continue;
return 0;
}
}

for (int i = 0; i < 9; i++) { //๋นˆ ๊ฐ„์ด ์†ํ•œ ์—ด ๊ฒ€์‚ฌ
if (sutoku[x][y] == sutoku[i][y]) {
if (x == i) //์œ„์™€ ๊ฐ™์€ ์˜๋ฏธ
continue;
return 0;
}
}

for (int k = x / 3 * 3; k < x / 3 * 3 + 3; k++) {
for (int l = y / 3 * 3; l < y / 3 * 3 + 3; l++) {
if (x == k && y == l)
continue;
if (sutoku[x][y] == sutoku[k][l])
return 0;
}
}
return 1;
}
๋ฐ˜์‘ํ˜•