假设给出一个正整数类型的数字,例如:312。请帮我用 PHP 编写一个程序,将给定的数字转换为具有相同位数的新数字,并且新数字的所有数字必须相等到给定数字的任何数字(例如:333、111、222,每个数字一次递减或递增 1)。但只打印生成该序列所需步骤数较少的数字序列,并打印生成该序列所需的步骤数。
解释:输入:一个正整数 N(例如:312)
将数字 (312) 转换为 3 的序列
3 2 2
3 3 2
3 3 3
这里的步骤数 = 3
现在,将数字(312)转换为 1 的序列
2 1 2
1 1 2
1 1 1
这里的步骤数 = 3
最后将数字(312)转换为2的序列
2 1 2
2 2 2
这里的步骤数 = 2
所以,输出:222
步数:2
这是我尝试过但失败的方法
<?php
$num = 312;
$arr_num = array_map('intval', str_split($num));
//steps taken for each sequence will be stored in this array
$steps = array();
//printing number
for($i = 0; $i < count($arr_num); $i++)
echo $arr_num[$i];
//calculation
for($i = 0; $i < count($arr_num); $i++) {
$count = 0;
for($j = 0; $j < count($arr_num); $j++) {
if($arr_num[$i] == $arr_num[$j])
++$j;
elseif($arr_num[$i] > $arr_num[$j]) {
while($arr_num[$j] != $arr[$i]) {
$arr_num[$j] += 1;
$count++;
}
}
else {
while($arr_num[$j] != $arr_num[$i]) {
$arr_num[$j] -= 1;
$count++;
}
}
}
//pushing the count to steps array for each sequence
array_push($steps, $count);
}
//I am stuck here...can't find the further solution
?>
收到一只叮咚
慕标琳琳