原试题:
将1-9这9个数字分别填入图中的各个圆圈内,要求其中相邻两个数差值的绝对值不小于3且不大于5。
这道题据说是北京元工国际科技股份有限公司(元工国际)的校招面试题,应届毕业生可以尝试下。

求差值题

经本菜鸡日思夜想,终于写出完整答案,不标准,仅供参考:


store = [-1] * 9
vis = [0] * 9

def dfs(store,vis, cur):
    if cur == 9 and valid(store):
        print(store)
        return
    for i in range(1,10):
        if not vis[i -1]:
            vis[i - 1] = 1
            store[cur] = i
            dfs(store, vis, cur + 1)
            vis[i - 1] = 0

def valid(store):
    length = len(store)
    store = store[-1:] + store + store[0:1]
    for i in range(1, length + 1):
        diff1 = abs(store[i] - store[i + 1])
        diff2 = abs(store[i] - store[i - 1])
        if not (diff1 >= 3 and diff1 <= 5 and diff2 >= 3 and diff2 <=5):
            return False
    return True


dfs(store,vis, 0)

结果如图:

答案结果

Last modification:June 9th, 2020 at 08:49 pm
如果觉得我的文章对你有用,请随意赞赏