我试图采取编码测试,我堆放在第一次测试。任何人都有机会拥有这一款,并可以指出我的正确方式?我已经为城市建立了阵容,可以从每个城市进行访问,并对其进行排序,以便能够在其上散步。它适用于我的绘图,但我有一些问题来实现它。Codility - 国家网络,如何解决它
对于给定的城市数组:
T[0] = 1
T[1] = 2
T[2] = 3
T[3] = 3
T[4] = 2
T[5] = 1
T[6] = 4
我已经创建了如下的步行数组,其中第一个数字是当前城市和在括号中的数字是可能的方式:0[1], 1[0,2,5],2[1,3,4],3[2],4[2,6],5[1],6[4]
。但在此之后,我无法弄清楚如何去做。
这是我
一个国家的网络由N个城市和N的问题 - 1路连接它们给出。城市在[0 ..(N - 1)]范围内标有不同的整数。道路将城市连接起来,使得每一对不同的城市通过直接的道路或通过由直接道路组成的道路相连。从任何其他城市到达任何城市都有一条途径。
从城市K出发,你必须计划一系列的日常旅行。你每天都想要访问以前未访问的城市,在通往该城市的路线上,你还将经过其他未访问城市的最大数量(这将被视为已访问过)。我们说目的地城市是我们的日常旅行目标。
在平局的情况下,您应该选择最小标签的城市。每个城市至少参观过一次,这些旅行就会停止。
例如,考虑K = 2和由七个城市和六条公路下面的网络:
你开始在全市2.从这里您做出以下车次:
day 1 − from city 2 to city 0 (cities 1 and 0 become visited),
day 2 − from city 0 to city 6 (cities 4 and 6 become visited),
day 3 − from city 6 to city 3 (city 3 becomes visited),
day 4 − from city 3 to city 5 (city 5 becomes visited).
目标是要找出旅行目标的顺序。在上面的例子中,我们有以下旅行目标:(2,0,6,3,5)。
struct Results {
int * D;
int X;
};
写功能:
struct Results solution(int K, int T[], int N);
,鉴于非空零索引阵列T由N个整数描述n个城市的一个网络和N - 1条道路,返回的序列旅行目标。
阵列T描述了城市网络如下:
if T[P] = Q and P ≠ Q, then there is a direct road between cities P and Q.
例如,给定包括七个要素的以下数组T(此数组描述上面所示的网络)和K = 2:
T[0] = 1
T[1] = 2
T[2] = 3
T[3] = 3
T[4] = 2
T[5] = 1
T[6] = 4
函数应该返回的序列[2,0,6,3,5],如上所述。
假设:
N is an integer within the range [1..90,000];
each element of array T is an integer within the range [0..(N−1)];
there is exactly one (possibly indirect) connection between any two distinct roads.
复杂性:
expected worst-case time complexity is O(N);
expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments).
输入数组的元素可以被修改。
你有没有遇到过这种情况? –