100000608 - 알고리즘 노트 8.1 소절 - 검색 주제 -> DFS(Devent Preserved Search)
37043 단어 codeup
5972 Problem A [귀속 입문] 전체 배열
#include
const int maxn = 10000;
int a[maxn];
bool flag[maxn] = { false };
void combine(int cnt,int n) {
if (cnt == n) {
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
printf("
");
return;
}
for (int i = 0; i < n; i++) {
if (flag[i] == false) {
a[cnt] = i + 1;
flag[i] = true;
combine(cnt + 1,n);
flag[i] = false;
}
}
}
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int cnt = 0;
combine(cnt, n);
}
return 0;
}
5973 Problem B [귀속 입문] 조합의 출력
#include
const int maxn = 10000;
int a[maxn];
void DFS(int cnt,int index,int n,int r) {
if (cnt > r) {
for (int i = 1; i <= r; i++)
printf("%d ", a[i]);
printf("
");
return;
}
if (index > n) return;
a[cnt] = index;
DFS(cnt+1, index + 1, n, r); //
DFS(cnt, index + 1, n, r); //
}
int main() {
int n,r;
while (scanf("%d %d", &n,&r) != EOF) {
int cnt = 0;
DFS(1, 1, n, r);
}
return 0;
}
5974 Problem C [귀속 입문] 조합 + 판단 소수
#include
#include
using namespace std;
const int maxn = 10000;
int a[maxn];
int n, k,num;
bool isprime(int sum) {
if (sum <= 1) return false;
else{
for (int i = 2; i <= sqrt(sum); i++) {
if (sum%i == 0) return false;
}
}
return true;
}
void DFS(int cnt, int sum,int index) {
if (cnt == k) {
if (isprime(sum)) num++;
return;
}
if (index == n) return;
DFS(cnt+1, sum + a[index], index+1);
DFS(cnt, sum, index+1);
}
int main() {
while (scanf("%d %d", &n,&k) != EOF) {
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int sum = 0,cnt = 0,index=0;
num = 0;
DFS(cnt, sum, index);
printf("%d
", num);
}
return 0;
}
5976 Problem D [귀속 입문] n 황후 문제 (원시적인 8 황후 문제) n 황후 문제 코드 1 n 황후 문제 코드 2
5977 Problem E [귀속 입문] 출하 시퀀스 통계
#include
int n,cnt;
void isstack(int popnum, int pushnum) {
if (pushnum == n || popnum == n) {
cnt++;
return;
}
isstack(popnum, pushnum + 1);
if (pushnum > popnum)
isstack( popnum + 1, pushnum);
return;
}
int main() {
while (scanf("%d", &n)!=EOF) {
cnt = 0;
int popnum = 0, pushnum = 0;
isstack(popnum, pushnum);
printf("%d
", cnt);
}
return 0;
}
5978 Problem F [귀속 입문] 미로를 걷다가 쓰고 싶지 않아요. 자꾸 틀려서 피곤해요.
#include
#include
using namespace std;
int dx[4]={0,-1,0,1},dy[4]={-1,0,1,0},a[20][20],x1,x2,y1,y2,m,n;// ,
struct node
{
int x,y;
}b[4400];// ,
bool flag=false;
void print(int t)
{
flag=true;
for(int i=1;i<=t-1;++i) printf("(%d,%d)->",b[i].x,b[i].y);
printf("(%d,%d)",b[t].x,b[t].y);
printf("
");
}
void dfs(int x,int y,int k)
{
b[k].x=x;b[k].y=y;
if(x==x2&&y==y2) print(k);
else
{
for(int i=0;i<=3;++i)
if((a[x+dx[i]][y+dy[i]]==1)&&(1<=x+dx[i]<=m)&&(1<=y+dy[i]<=n))
{
a[x+dx[i]][y+dy[i]]=0;
dfs(x+dx[i],y+dy[i],k+1);// , k++
a[x+dx[i]][y+dy[i]]=1;
}
}
}
int main()
{
scanf("%d%d",&m,&n);
memset(a,0,sizeof(a));
for(int i=1;i<=m;++i)
for(int j=1;j<=n;++j)
scanf("%d",&a[i][j]);
scanf("%d%d",&x1,&y1);
scanf("%d%d",&x2,&y2);
a[x1][y1]=0;// false,
dfs(x1,y1,1);
if(flag==false) printf("-1");
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[codeup] 4891 : 행복코이 초등학교에 새로 부임하신 교장선생님은 어린 학생들의 행복감과 학생들의 성적 차이 관계를 알아보기로 했다. 그래서 이전 성적을 조사하여 학생들의 시험 점수 차이 변화를 알아보려고 한다. 예를 들어서 2016년 학...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.