필기시험 프로 그래 밍: 고객 지원 배정 문제
2441 단어 알고리즘 친구 여행
입력: n (n 개 그룹 대표)
m: m 조 제약, 다음 m 줄 데이터 가 있 습 니 다.
a, b (대표 a b 두 고객 센터 레이 블 은 동시에 출근 할 수 없습니다)
출력: 실행 가능 한 지 여 부 를 판단 합 니 다. 출력 no 가 안 되면 출력 가능 yes
예:
입력:
4
3
1,4
2,3
7,3
출력: yes
설명: 이 는 깊이 있 는 우선 검색 으로 문 제 를 해결 할 수 있 지만 이미 선택 한 고객 센터 번 호 를 제약 조건 의 판단 에 저장 하기 위해 용 기 를 유지 해 야 합 니 다. 새로운 고객 센터 번 호 를 저장 할 때마다 제약 이 성립 되 는 지 여 부 를 판단 합 니 다. 만약 에 성립 되 고 다음 그룹 에 들 어가 지 않 으 면 방금 입력 한 번 호 를 삭제 하고 이전 층 으로 돌아 갑 니 다.
import java.util.ArrayList;
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
// 、 、
int zu=sca.nextInt();
int limit=sca.nextInt();
int[][] map=new int[limit][2];
for(int i=0;i al = new ArrayList();
// , 1,
if(fun1(0,zu,1,al,map)) {
return true;
}
al.remove(0);
if(fun1(0,zu,2,al,map)) {
return true;
}
return false;
}
//fun1( , , , , )
static boolean fun1 (int index,int zu,int rl,ArrayList al,int[][] map) {
boolean flag=false;
if(index==zu) { // ,
return true;
}
else {
/*
* , , ,
* , ,
*/
al.add(index*2+rl);
if(fun2(al,map)) {
if(fun1(index+1,zu,1,al,map)) {
return true;
}
if(fun1(index+1,zu,2,al,map)) {
return true;
}
}
else {
al.remove(al.size()-1);
return false;
}
}
return flag;
}
// , , true
static boolean fun2(ArrayList al,int[][] map) {
boolean flag=true;
for (int i=0;i
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
면적 이 가장 큰 사각형 (단조 창고 문제)제목: N 개의 사각형 이 있 고 너 비 는 모두 1 이 며 N 개의 사각형 의 높이 를 제시 합 니 다. 분석: 모든 사각형 에 대해 우 리 는 그것 이 왼쪽 에서 오른쪽으로 각각 연장 할 수 있 는 길 이 를 구...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.