• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

85번 수식 만들기 코드가 time limit이 발생합니다.

22.03.16 01:33 작성 조회수 220

0

85번을 풀면서 채점프로그램에서 1번은 success, 나머지 4개는 time_limit이 발생했고, 입출력 결과는 수동으로 해봤을때 잘 나왔습니다. 다음 코드에서 왜 time_limit이 발생한 건가요?

추가로, time_limit이 발생할지 여부를 판단하는 방법이 있을까요? 

 

#include<bits/stdc++.h>
using namespace std;
int n, op[5], res_max=-2147000000, res_min=2147000000;
vector<int> numbers(11);
void DFS(int L, int sum) {
	int i, j;
	if(L > n-1) {
		if(res_max < sum) res_max = sum;
		if(res_min > sum) res_min = sum;
	}
	else {
		for(i=0; i<n-1; i++) { //연산자 개수 
			for(j=1; j<=4; j++) {
				if(op[j] > 0) {					
					op[j]--;	
					if(j==1) DFS(L+1, sum+numbers[L+1]);
					else if(j==2) DFS(L+1, sum-numbers[L+1]);
					else if(j==3) DFS(L+1, sum*numbers[L+1]);
					else if(j==4) DFS(L+1, sum/numbers[L+1]);				
					op[j]++;
				}
			}		
		}
	}
}
int main() {
	ios_base::sync_with_stdio(false);
	freopen("input.txt", "rt", stdin); 
	int i;
	cin>>n;
	for(i=1; i<=n; i++) {
		cin>>numbers[i];
	}
	for(i=1; i<=4; i++) {
		cin>>op[i];
	}
	DFS(1, numbers[1]);
	cout<<res_max<<"\n"<<res_min;
	return 0;
}

답변 1

답변을 작성해보세요.

0

안녕하세요^^

재귀안에 2중 for문이 있어야 하나요? 강의 영상을 잘보시고 비교해보세요.

coli님의 프로필

coli

질문자

2022.03.16

오 그렇군요! 감사합니다