Niu Ke.netプログラミングの質問pythonの実装(1)-------- Huawei 2016 R&Dエンジニアプログラミングの質問

1.番号を削除する

制限時間:C / C ++ 1秒、他の言語2秒

スペースの制限:C / C ++ 32M、その他の言語64M

配列a [N]には0からN-1まで順番に格納されており、2つの数値ごとに番号を削除する必要があります。最後に到達したら、最初にループして続行し、最後に削除された番号の元の添え字位置を見つけます。例として8つの数値(N = 7)を取り上げます:{0、1、2、3、4、5、6、7}、0-> 1-> 2(削除済み)-> 3-> 4-> 5(削除)-> 6-> 7-> 0(削除)なので、最後の番号が削除されるまで循環します。
 

説明を入力してください:

每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。

 

出力の説明:

一行输出最后一个被删掉的数的原始下标位置。

 

入力例1:

8

出力例1:

6

 

コードの実装:

インポートシステム

sys.stdinの
    行の
    場合n = int(line)n> 1000の場合:
        n = 1000
    a = [i for i in range(n)]
    i、deletes、k = -1、0、0
    while deletes <n:
        k = 0
        while k <= 2:
            i + = 1
            i = i%n
            if a [i] == -1:
                continue
            k + = 1
        a [i] = -1
        deletes + = 1
    print(i)
        
    

【プログラミング質問】文字セット

制限時間:C / C ++ 1秒、他の言語2秒

スペースの制限:C / C ++ 32M、その他の言語64M

文字列を入力して、文字列に含まれる文字セットを検索します
 

説明を入力してください:

每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。

 

出力の説明:

每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。

 

入力例1:

abcqweracb

 

出力例1:

abcqwer

 

コードの実装:

インポートシステム

sys.stdinの行の場合:
    d = {}
    s = ''
    cの行の
        場合cがdおよびcにない場合!= '\ n':
            s + = c
            d [c] = 1
    print(s)

 

【プログラミング問題】数独

制限時間:C / C ++ 1秒、他の言語2秒

スペースの制限:C / C ++ 32M、その他の言語64M

数独は私たちがよく知っている古典的なゲームです。コンピュータを使用すると、数独パズルをすばやく解くことができます。簡単な数独の問題がいくつかあります。解くためのプログラムを作成してください。
 

説明を入力してください:

输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。

 

出力の説明:

输出九行,每行九个空格隔开的数字,为解出的答案。

 

コードの実装:

import sys
import copy

def check_results(results, i, j):
    row = results[i]
    for m in range(0, j):
        if row[m] == row[j]:
            return False

    for n in range(0, i):
        if results[n][j] == results[i][j]:
            return False

    k, l = i//3, j//3
    for m in range(k*3, i+1):
        for n in range(l*3, l*3+3):
            if m == i and n == j:
                return True
            if results[m][n] == results[i][j]:
                return False

    return True

def prt_results(results):
    for row in results:
        s = ''
        for col in row:
            s += ' ' + str(col)
        print(s)

def get_sd(a, i=0, j=0, results=None):
    if results is None:
        results = copy.deepcopy(a)

    if a[i][j] != 0:
        if j < 8:
            get_sd(a, i, j+1, results)
        elif i < 8:
            get_sd(a, i+1, 0, results)
        else:
            prt_results(results)
            sys.exit(0)
    else:
        for s in range(1, 10):
            results[i][j] = s
            if not check_results(results, i, j):
                continue
            else:
                if i == 8 and j == 8:
                    prt_results(results)
                    sys.exit(0)
                elif j < 8:
                    get_sd(a, i, j+1, results)
                elif i < 8:
                    get_sd(a, i+1, 0, results)
        results[i][j] = 0
    return results

if __name__ == "__main__":
    a=[[0 for _ in range(9)] for _ in range(9)]
    get_sd(a, 0, 0
公開された230元の記事 ウォンの賞賛160 ビュー820 000 +

おすすめ

転載: blog.csdn.net/happyAnger6/article/details/104235684