1. Supprimer le numéro
Limite de temps: C / C ++ 1 seconde, autres langues 2 secondes
Limitation d'espace: C / C ++ 32M, autres langues 64M
Il y a un tableau a [N] qui stocke 0 ~ N-1 dans l'ordre, et il est nécessaire de supprimer un nombre tous les deux nombres. Lorsque la fin est atteinte, bouclez jusqu'au début pour continuer et recherchez la position d'indice d'origine du dernier numéro supprimé. Prenons 8 chiffres (N = 7) comme exemple: {0, 1, 2, 3, 4, 5, 6, 7}, 0-> 1-> 2 (supprimé) -> 3-> 4-> 5 ( Supprimer) -> 6-> 7-> 0 (Supprimer), alors faites défiler jusqu'à ce que le dernier numéro soit supprimé.
Entrez la description:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。
Description de la sortie:
一行输出最后一个被删掉的数的原始下标位置。
Exemple d'entrée 1:
8
Exemple de sortie 1:
6
Implémentation du code:
importer sys
pour la ligne dans sys.stdin:
n = int (ligne)
si n> 1000:
n = 1000
a = [i pour i dans la plage (n)]
i, supprime, k = -1, 0, 0
tandis que supprime <n:
k = 0
tandis que k <= 2:
i + = 1
i = i% n
si a [i] == -1:
continuer
k + = 1
a [i] = -1
supprime + = 1
print (i)
Jeu de caractères [Question de programmation]
Limite de temps: C / C ++ 1 seconde, autres langues 2 secondes
Limitation d'espace: C / C ++ 32M, autres langues 64M
Entrez une chaîne pour trouver le jeu de caractères contenu dans la chaîne
Entrez la description:
每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
Description de la sortie:
每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。
Exemple d'entrée 1:
abcqweracb
Exemple de sortie 1:
abcqwer
Implémentation du code:
importer sys
pour la ligne dans sys.stdin:
d = {}
s = ''
pour c dans la ligne:
si c pas dans d et c! = '\ n':
s + = c
d [c] = 1
print (s)
[Question de programmation] Sudoku
Limite de temps: C / C ++ 1 seconde, autres langues 2 secondes
Limitation d'espace: C / C ++ 32M, autres langues 64M
Le Sudoku est un jeu classique que nous connaissons tous très bien. En utilisant un ordinateur, nous pouvons résoudre rapidement le puzzle Sudoku. Il y a maintenant quelques problèmes simples de Sudoku. Veuillez écrire un programme pour le résoudre.
Entrez la description:
输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。
Description de la sortie:
输出九行,每行九个空格隔开的数字,为解出的答案。
Implémentation du code:
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