귀속 중 x++ 또는++x를 사용하지 마십시오.
1217 단어 푸른다리 컵
공원 입장료는 5각이다.가령 모든 관광객이 두 가지 화폐 가치의 화폐를 가지고 있다고 가정하면 5각, 1위안이다.다시 말하면 5각을 가진 사람은 m인이고 1원을 가진 사람은 n인이다.특수한 상황 때문에 처음에는 매표원이 거스름돈이 없었다.우리는 이 m+n명의 관광객이 어떤 순서로 표를 사면 순조롭게 표 구매 과정을 완성할 수 있는지 알고 싶다.분명히 m
주의: 5각과 1원이 교차하는 순서의 다른 배열에만 관심을 갖는다. 같은 화폐 가치를 가진 두 명의 관광객 교환 위치는 새로운 상황으로 계산되지 않는다.
개인은 알고리즘이 완전히 정확하다고 생각하지만 항상 정확한 결과를 실행할 수 없다.debug 변수를 보고 x+와++x의 원인을 발견했습니다.
package KeCheng2;
public class T7zuoye {
/*
* m:0.5
* n:1
* x: 0.5
*/
static int f(int m,int n,int x){
if(x==0) {
m--;
x++;
}
if(n==0) return 1;
if(m==0&&n<=x) return 1;
return f(m-1,n,x+1)+f(m,n-1,x-1);// ! x++ ++x
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(f(2,2,0));
}
}
return f(m-1,n,x+1)+f(m,n-1,x-1);// ! x++ ++x
x++는 x의 값을 먼저 사용한 다음에++를 표시하기 때문이다.
그리고++x, 먼저 x+1 조작을 한 다음에 사용하면 뒤에 있는 두 번째 f의 x 수치에 영향을 줍니다!