3의 나눗셈으로 숫자를 변환하고 싶습니다.
숫자는 숫자가 같고 앞에 0이없는 다른 숫자로 변환 될 수 있습니다.
시간 제한 초과 알고리즘의 오류
숫자를 다른 숫자로 변환하는 비용은 해당 숫자의 절대 차이의 합입니다. 예를 들어, 235에서 331로 변환하는 비용은 5입니다 (해당 자릿수의 절대 차이는 | 3 || + | 3-3 | + | 1-5 |이므로 | 1 | + 0+ | -4 |
Number= 66 cost= 3
36,45,54,57,63,66,69,75,78,87,96이다 (66)의 선정 ≤3 내에서 생성 될 수있는 번호 = 5.
및 가하는 모든 조합 : 대답은 11
내 접근 방식3210
public static void cal(int len , int sum , int c , String SS){ if(c>cost) return ; if(len==SS.length()){ if(sum%3==0) ans++; return; } for(int i=0;i<=9;i++){ int xx =Math.abs(i-Character.getNumericValue(SS.charAt(len))); cal(current+1, len+1, sum+i, c+xx, SS); } }
MSB에서는 0이 허용되지 않으므로.
어떻게 내가 내 알고리즘을 향상시킬 수있는 예 237946732463272737 60
내 코드는 특정 시간에 계산하지이 출력의
for(int i=1;i<=9;i++){
int xx =Math.abs(i-Character.getNumericValue(SS.charAt(0)));
cal(i, 1, i, xx , SS);
}
이 내가 문제를 해결하는 방법입니다
3 * 평균을 나눌 수있는 숫자는 무엇입니까? – NPE
그래서 세 번째로 나눌 수있는 모든 숫자를 상기 전환에 의해 도달 할 수있는 것으로 계산하려면 지정된 비용 내로 계산 하시겠습니까? –
첫 번째로 사용해야 할 점은 3으로 나눌 수있는 숫자의 자릿수가 3로 나눌 수있는 숫자의 합계라는 사실입니다. 이는 비용 함수와 밀접하게 관련되어 있습니다. –