老师,问一道题
来源:3-2 改变变量定义,依然可以写出正确的算法
weixin_慕仰6475988
2020-03-05
老师,我想问下
for (int i = 0; i < (sum/k*k); i++)//处理尾巴前的节点
result[i] = list[i / k * k + k - 1 - i % k];
这里的list[]里面这个索引写法,怎么解释得到的?
#include
#include
using namespace std;
int main()
{
int first, k, n, sum = 0;
cin >> first >> n >> k;
int temp, data[100005], next[100005], list[100005], result[100005];
for (int i = 0; i < n; i++)
{
cin >> temp;
cin >> data[temp] >> next[temp];
}
while (first != -1)
{
list[sum++] = first;
first = next[first];
}
for (int i = 0; i < sum; i++)
result[i] = list[i];
//
for (int i = 0; i < (sum/k*k); i++)//处理尾巴前的节点
result[i] = list[i / k * k + k - 1 - i % k];
for (int i = 0; i < sum - 1; i++) //打印数据,对于最后的数据额外处理
printf("%05d %d %05d\n", result[i], data[result[i]], result[i + 1]);
printf("%05d %d -1", result[sum - 1], data[result[sum - 1]]);
return 0;
}
1回答
-
liuyubobobo
2020-03-06
抱歉,这个课程的问答区只回答 Leetcode 相关的问题。Leetcode 上已经有 超过 1000 个问题,我相信组一行爱算法面试的方方面面了。精力有限,我无法做到同学们随便拿出一个算法题,我就做出解答,请谅解。
尤其是你的这种问题,已经有了别人的代码,可以尝试自己调试跟踪,理解代码的计算过程的含义。如果还有问题,请找代码的原作者进行探讨。
继续加油!:)
012020-03-06
相似问题
回答 1
回答 1