우 객 망 프로 그래 밍 문제 python 실현 (一) --- 화 웨 이 2016 연구개 발 엔지니어 프로 그래 밍 문제

1. 삭제 수
시간 제한: 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

좋은 웹페이지 즐겨찾기