깊이 우선 검색과 문제 단순 함수 귀속 "더하기, 더하기, 더하기"
코드:
#include<cstdio>
#include<iostream>
#include<stdlib.h>
#include<string.h>
int n;
int store[11]={1,1,2,6,24,120,720,5040,40320,362880};
bool dfs(int i,int sum)//9
{
if(i==10)return sum==n;//
if(dfs(i+1,sum))return true;//
if(dfs(i+1,sum+store[i]))return true;//
return false;//
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n<0)break;
if(n==0)
{
printf("NO
");
continue;
}
bool t;
t=dfs(0,0);
if(t)printf("YES
");
else printf("NO
");
}
return 0;
}
핵심 부분 추가 또는 추가 안 함
int store[11]={1,1,2,6,24,120,720,5040,40320,362880};
bool dfs(int i,int sum)//9
{
if(i==10)return sum==n;//
if(dfs(i+1,sum))return true;//
if(dfs(i+1,sum+store[i]))return true;//
return false;//
}
ffs는 비교적 편리한 용도로 이런 유형의 제목인 부분과 문제를 판단할 수 있다.우선 첫 번째 부분에서 모든 노드를 판단했는지 여부를 판단하고sum==n으로 되돌려줍니다. 찾으면 True로 돌아가고 찾지 못하면 False로 돌아갑니다.
두 번째 부분은 현재 이 노드에서 이 노드가 대표하는 수를 더하지 않는 값을 선택하여 원하는 결과를 얻고 True로 돌아간다는 것을 나타낸다.
세 번째 부분은 현재 이 노드에서 이 노드가 대표하는 수를 더한 값을 선택하여 원하는 결과를 얻고 True로 돌아간다는 것을 나타낸다.
마지막으로 만약에 이 노드에 있다면 이 노드의 상태가 어떻든지 간에 원하는 값을 찾지 못하고false로 되돌아갈 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.