Exercice de programmation @8-23

Partagez deux questions de programmation le 23 août :

1 Arrangement pour la cérémonie d'ouverture

Titre Description
Le réalisateur organise la répétition de la cérémonie d'ouverture de l'Universiade, et l'un des liens demande aux participants de former un cercle.
Les interprètes formaient un cercle et, pour des raisons d'esthétique, le réalisateur ne voulait pas que les autres autour d'un certain acteur soient trop petits ou trop grands que lui.
Maintenant, étant donné la hauteur de n acteurs, lorsqu'ils se tiennent en cercle, quelle est la valeur maximale de la différence de hauteur entre des acteurs adjacents ? Aidez-nous à calculer.
Description de l'entrée
L'entrée se compose de deux lignes, la première ligne contient un entier positif représentant le nombre de personnes n.
La deuxième ligne a un entier positif h séparé par n espaces ; elle représente la hauteur du i-ème acteur.
Description de la sortie
La sortie consiste en un entier positif représentant la réponse.

Exemple 1 :
Entrée :
5
2 1 1 3 2
Sortie :
1
Exemple 2 :
Entrée
2
10 20
Sortie
10

le code s'affiche comme ci-dessous :

def minDifference(n, nums):
    nums.sort()
    res = nums[n - 1] - nums[n - 2]

    for i in range(n - 2, 0, -1):
        if i == 1:
            res = max(res, abs(nums[i] - nums[i - 1]))
        else:
            res = max(res, abs(nums[i] - nums[i - 2]))
    return res

if __name__ == '__main__':
    n = int(input())
    nums = list(map(int, input().split()))
    print(minDifference(n, nums))

2 chiffres minimum

Description du titre
Xiao Ming a généré aléatoirement N entiers positifs avec un ordinateur, et il espère sélectionner plusieurs nombres parmi ces N nombres afin que leur somme soit égale à M. Ces nombres générés aléatoirement peuvent être les mêmes, mais chaque numéro ne peut être utilisé qu'une seule fois au maximum. Bien entendu, un tel système de sélection peut ne pas exister, ou il peut y en avoir plusieurs.
Maintenant, j'espère que vous écrirez un programme capable de trouver le schéma de sélection avec le plus petit nombre de nombres, d'afficher le nombre minimum de nombres correspondant et d'afficher "Aucune solution" s'il n'y a pas de solution.
Description de l'entrée
Entrée de groupe unique, chaque groupe entre 2 lignes.
La ligne 1 contient deux entiers positifs N et M, représentant respectivement le nombre d'entiers positifs initialement saisis et le nombre cible (N<=1e3, M<=1e5).
La deuxième ligne est composée de N entiers positifs, séparés par des espaces (chaque entier positif est inférieur ou égal à 1e5).
Description de la sortie
Affiche le nombre minimum de nombres contenus dans le schéma de sélection avec le plus petit nombre de nombres, s'il n'y a pas de solution, affiche "Aucune solution".

Exemple 1 :
Entrée :
5 5
1 3 2 1 1
Sortie :
2

le code s'affiche comme ci-dessous :

def find_min_nums_for_sum(nums, target):
    dp = [float('inf')] * (target + 1)
    dp[0] = 0

    for num in nums:
        for j in range(target, num - 1, -1):
            if dp[j - num] != float('inf'):
                dp[j] = min(dp[j], dp[j - num] + 1)

    return dp[target] if dp[target] != float('inf') else 'No solution'

if __name__ == '__main__':
    N, M = map(int, input().split())
    nums = list(map(int, input().split()))
    print(find_min_nums_for_sum(nums, M))

Je suppose que tu aimes

Origine blog.csdn.net/cjw838982809/article/details/132461728
conseillé
Classement