自己突然想写个回溯法,自己写的东西感觉比较符合思维逻辑,分享出来,可能与网上的有差距
public static void show(int d)
{
int i=0;
m[i]=0;\\从0,0开始
i++;\\测试下一位,此处是为了便于后面的逻辑规律
while(i>=0)
{
while(test(i,m[i])==false && m[i]<d)\\下一位进行测试
m[i]++;
if(m[i]<d && i<d)
{
if(i==d-1)
{
print(d); //输出答案
m[i]++;//找到一个答案后继续寻找
}
else
{
i++;\\再找下一位
m[i]=0;\\下一位从0开始测试
}
}
else
{
if(i>0)//以防数组越界
{
i--;//开始回溯
m[i]++;
}
}
}
}
这是具体代码