POJ 1321 바둑판 문제
주어진 모양 의 바둑판 (모양 이 불규칙 할 수 있 음) 위 에 바둑 알 을 놓 으 면 바둑 알 은 차이 가 없다.배치 할 때 임의의 두 개의 바둑 알 을 바둑판 의 같은 줄 이나 같은 열 에 놓 을 수 없습니다. 주어진 모양 과 크기 의 바둑판 에 대해 K 개의 바둑 알 을 배치 할 수 있 는 모든 실행 가능 한 배치 방안 C 를 프로 그래 밍 하 십시오.
Input
여러 그룹의 테스트 데 이 터 를 입력 하 십시오.
각 조 데이터 의 첫 줄 은 두 개의 정수, n k 로 빈 칸 으로 나 누 어 n * n 의 행렬 에서 바둑판 을 묘사 하고 바둑 알 을 놓 는 수 를 나타 낸다.n <= 8 , k <= n
- 1 - 1 일 때 입력 이 끝 났 음 을 표시 합 니 다.
다음 n 줄 은 바둑판 의 모양 을 묘사 했다. 줄 마다 n 개의 문자 가 있 는데 그 중에서 \ # 는 바둑판 구역 을 나타 낸다. 공백 구역 을 나타 낸다 (데 이 터 는 불필요 한 공백 줄 이나 공백 열 이 나타 나 지 않도록 보증한다).
Output
각 그룹의 데이터 에 대해 한 줄 의 출력, 출력 배치 방안 의 수량 C (데이터 보증 C < 2 ^ 31) 를 드 립 니 다.
Sample Input
2 1
#.
.#
4 4
...#
..#.
.#..
#...
-1 -1
Sample Output
2
1
DFS
LANGUAGE:C
CODE:
#include<stdio.h>
char s[10][10];
int col[10]={0},ans;
int n,m;
void dfs(int a,int b)
{
int i;
if(b<0)return ;
if(a==n)
{
if(b==0)
ans++;
return ;
}
for(i=0;i<n;i++)
{
if(!col[i]&&s[a][i]!='.')
{
col[i]=1;
dfs(a+1,b-1);
col[i]=0;
}
}
dfs(a+1,b);
}
int main()
{
int i;
while(scanf("%d%d",&n,&m),n!=-1||m!=-1)
{
for(i=0;i<n;i++)
scanf("%s",s[i]);
ans=0;dfs(0,m);
printf("%d
",ans);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.