우 객 망 프로 그래 밍 문제 python 실현 (一) --- 화 웨 이 2016 연구개 발 엔지니어 프로 그래 밍 문제
3631 단어 데이터 구조 와 알고리즘문제 풀이 기록
시간 제한: C / C + + 1 초, 기타 언어 2 초
공간 제한: C / C + + 32M, 기타 언어 64M
하나의 배열 a [N] 순서 로 0 ~ N - 1 을 저장 합 니 다. 두 개의 숫자 마다 한 개의 수 를 삭제 하고 끝 날 때 까지 처음부터 계속 진행 하 며 마지막 으로 삭 제 된 수의 원시 아래 표 시 된 위 치 를 구 합 니 다.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
코드 구현:
import sys
for line in sys.stdin: n = int(line) if 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
코드 구현:
import sys
for line in sys.stdin: d = {} s = '' for c in line: if c not in d and c != '': 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JAVA] 배열 회전 출력요소 가 출력 을 시작 하 는 위치 에 주의 하 십시오. 모두 몇 라운드 의 수출 이 있 습 니까? n/2 + 1 매 라 운 드 는 상, 우, 하, 좌 로 나 뉜 다. 각 방향의 시작 위치 와 좌표 의 관 계 를 구...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.