这个回溯错哪部了?
public class t1491 {
	static int a[] = new int[3] ;
	static int f[] = new int[3];
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		backtrack(0);
	}
	public static void backtrack(int depth)
	{
		if(depth==a.length)
		{
			for(int i=0; i<a.length;i++)
			{
				System.out.print(a[i]);
			}
			System.out.println();
		}
		for(int i=0;i<a.length;i++)
		{
			if(f[i]==0)
			{
				a[i]=i+1;
				f[i]=1;
				backtrack(depth+1);
				f[i]=0;
			}
		}
	}
}
为什么输出都是123?
------解决方案--------------------
不知道你想要什么结果,看下面的例子,自己想吧
#include <stdio.h>
int num[10];
int visit[10];
void dfs( int index ){
    if( index==10 ){
        int a = 100*num[1] + 10*num[2] + num[3];
        int b = 100*num[4] + 10*num[5] + num[6];
        int c = 100*num[7] + 10*num[8] + num[9];
        if( a==2*b && a==3*c )
            printf( "%d %d %d\n", a, b, c);
    }
    int i;
    for( i=1; i<=9; i++){
        if( visit[i]!=1 ){
            visit[i]=1;
            num[i] = index;
            dfs(index+1);             //深度搜索
            visit[i] = 0;             //回溯
        }
    }
}
int main (void)
{
    int i;
    for(i=0; i<10; i++)
        visit[i] = 0;
    dfs(1);
    return 0;
}
//将1到9这九个数字分成3个三位数a,b,c,要求第1个三位数,正好是第2个三位数的两倍,是第3个三位数的三倍