창고 의 사상 으로 기차 가 역 에 들 어 오 는 문 제 를 분석 하 다.

1368 단어
번호 가 1, 2, 3, 4 인 네 대의 기 차 는 창고 식 열차 스케줄 러 를 통과 하 는데 얻 을 수 있 는 스케줄 결 과 는 어떤 것 이 있 습 니까?n 열 기차 가 스케줄 러 를 통과 하면 가능 한 모든 스케줄 결 과 를 출력 하 는 알고리즘 을 설계 하 십시오.[답]: 문제 풀이 방향: 스 택 은 선진 적 인 후에 나 오고 후진 적 으로 먼저 나 오 는 특징 을 가지 기 때문에 모든 스케줄 결 과 는 1, 2, 3, 4 전체 배열 중의 한 요소 여야 합 니 다.스 택 에 들 어 가 는 순 서 는 작은 것 에서 큰 것 으로 되 어 있 기 때문에 스 택 에 들 어 가 는 순 서 는 다음 과 같은 조건 을 만족 시 켜 야 합 니 다. 서열 중의 모든 숫자 에 대해 그 뒤의 모든 것 이 역순 이 어야 합 니 다. 예 를 들 어 4321 은 효과 적 인 스 택 서열 이 고 1423 은 효과 적 인 스 택 결과 가 아 닙 니 다 (4 뒤에 그것 보다 작은 두 개의 수 2, 3 은 역순 이 아 닙 니 다).이에 따라 본 문 제 는 알고리즘 을 통 해 n 개 수의 전체 배열 을 만 든 다음 에 스 택 규칙 의 서열 출력 을 만족 시 킬 수 있 습 니 다.이 귀속 정의 에 따라 귀속 알고리즘 은 다음 과 같다.
#include
int cont=1;
void print(int str[],int n);
void perm(int str[],int k,int n)
{
	int i,temp;
	if(k==n-1)print(str,n);//k n-1  ,        
	else{
		for(i=k;istr[j])
	 		{
	 			if (m==0) b[m++]=str[j];//  str[i]       
     			else 
			 	{
			 		//               ,       
		 			if (str[j]>b[0]) flag=0;
		 			//           
        			else b[0]=str[j]; 
      			} 
      		}
		} 
	} 
	if(flag)        /*           str[]     */ 
	{   
		printf(" %2d:",cont++); //     
        for(i=0;i

좋은 웹페이지 즐겨찾기