자바 버 전 - 고전 알고리즘 '조세 프 링 문제' (기업 고주파 필기시험 알고리즘 문제)
12392 단어 알고리즘
흔히 볼 수 있 는 해법 은 세 가지 가 있다. 배열, 링크 와 재 귀 이다.
기업 필기시험 을 이해 하고 준비 하기 위해 본 고 는 이 알고리즘 의 자바 문제 풀이 템 플 릿 을 제시 하고 목록 (Array List) 데이터 구 조 를 사용한다.
package yuesefuhuan;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();//
int m=sc.nextInt();// m
List<Integer> circleQueque = new ArrayList<Integer>();
// ,
for (int i = 0; i < n; i++) {
circleQueque.add(i + 1);
}
int start = 0; //
// 1 ,
while (circleQueque.size() >1) {
//
int curPopIndex = (start + m - 1) % circleQueque.size();
// ,
circleQueque.remove(curPopIndex);
start = curPopIndex;
}
System.out.print(" :"+circleQueque.get(0));
}
}
고전 알고리즘 - 조세 프 링 (변종 판) 사례 2: 이미 알 고 있 는 n 개인 (번호 1, 2, 3... n 으로 각각 표시) 이 원탁 주위 에 둘 러 앉 았 다.번호 가 1 인 사람 부터 번 호 를 매기 고 m = 1, 2, 3.
조심해!!!이곳 의 m 는 더 이상 고정 값 이 아니 라 등차 수열 이다.
package yuesefuhuan;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int start = 0;
int m = 1;
List<Integer> circleQueque = new ArrayList<>();
//
for(int i = 1 ;i <n; i++){
circleQueque.add(i+1);
}
while(circleQueque.size()>1){
// , , (start+m) 1
int curPopIndex = (start+m)%circleQueque.size();
circleQueque.remove(curPopIndex);
//m
m++;
//
start = curPopIndex;
}
System.out.println(" :"+circleQueque.get(0));
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.