<pre name="code" class="cpp">//回溯算法
int FindTheNumber()
{
int solution[10];
memset(solution, 0, 10*sizeof(int));
bool used[10];
memset(used,false,10*sizeof(bool));
int num = 0;
int k = 1;
while(k >= 1)
{
if(solution[k] != 0)
{
num -= solution[k];
num /= 10;
used[solution[k]] = false;
}
int i;
for(i = solution[k] + 1; i <= 9; i++) //为位置k找一个合适的数
{
if(!used[i] && (num * 10 + i) % k == 0) break;
}
if(i == 10) //找不到则回溯到上一个位置
{
solution[k] = 0;
k--;
}
else
{
solution[k] = i;
used[solution[k]] = true;
num *= 10;
num += solution[k];
if(k == 9) //找到符合条件的数了,直接返回
return num;
else //转到下一个位置
k++;
}
}
return 0;
}
编程之美4.10 数字哑谜和回文
原文作者:维那厮
原文地址: https://blog.csdn.net/tanwei100/article/details/37839943
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/tanwei100/article/details/37839943
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。