1. Eliminar el número
Límite de tiempo: C / C ++ 1 segundo, otros idiomas 2 segundos
Limitación de espacio: C / C ++ 32M, otros idiomas 64M
Hay una matriz a [N] que almacena 0 ~ N-1 en orden, y se requiere eliminar un número cada dos números. Cuando se alcanza el final, avance hasta el principio para continuar y encuentre la posición del subíndice original del último número eliminado. Tome 8 números (N = 7) como ejemplo: {0, 1, 2, 3, 4, 5, 6, 7}, 0-> 1-> 2 (eliminado) -> 3-> 4-> 5 ( Eliminar) -> 6-> 7-> 0 (Eliminar), así que cicle hasta que se elimine el último número.
Ingrese la descripción:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。
Descripción de salida:
一行输出最后一个被删掉的数的原始下标位置。
Ejemplo de entrada 1:
8
Ejemplo de salida 1:
6
Implementación de código:
sys de importación
para línea en sys.stdin:
n = int (línea)
si n> 1000:
n = 1000
a = [i para i en rango (n)]
i, elimina, k = -1, 0, 0
mientras elimina <n:
k = 0
mientras k <= 2:
i + = 1
i = i% n
si a [i] == -1:
continuar
k + = 1
a [i] = -1
elimina + = 1
print (i)
[Pregunta de programación] juego de caracteres
Límite de tiempo: C / C ++ 1 segundo, otros idiomas 2 segundos
Limitación de espacio: C / C ++ 32M, otros idiomas 64M
Ingrese una cadena para encontrar el conjunto de caracteres contenido en la cadena
Ingrese la descripción:
每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
Descripción de salida:
每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。
Ejemplo de entrada 1:
abcqweracb
Ejemplo de salida 1:
abcqwer
Implementación de código:
sys de importación
para línea en sys.stdin:
d = {}
s = ''
para c en línea:
si c no está en d y c! = '\ n':
s + = c
d [c] = 1
impresión (s)
[Pregunta de programación] Sudoku
Límite de tiempo: C / C ++ 1 segundo, otros idiomas 2 segundos
Limitación de espacio: C / C ++ 32M, otros idiomas 64M
Sudoku es un juego clásico con el que todos estamos muy familiarizados. Usando una computadora, podemos resolver rápidamente el rompecabezas de Sudoku. Ahora hay algunos problemas simples de Sudoku. Por favor, escriba un programa para resolverlo.
Ingrese la descripción:
输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。
Descripción de salida:
输出九行,每行九个空格隔开的数字,为解出的答案。
Implementación de código:
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