S’il te plaît! Comment résoudre cette question ? (C++)

la programmation


Voici une question que j’ai posée lors d’une pratique quotidienne :

Le fermier John a N vaches dans une lignée (1≤N≤3⋅10^5). Malheureusement, une maladie se propage partout. Au début, certaines vaches sont infectées au début. Chaque nuit, une vache infectée transmet la maladie aux vaches situées à sa gauche et à sa droite (si elles existent). Une fois qu’une vache est infectée, elle reste infectée. Après un certain nombre de nuits, le fermier John se rend compte que le problème est devenu incontrôlable, alors il teste ses vaches pour déterminer qui est malade. Trouvez le nombre minimum de vaches qui auraient pu commencer à souffrir de la maladie.

FORMAT D’ENTRÉE
La première ligne contient N, le nombre de vaches que possède le fermier John.
La ligne suivante contient une chaîne de bits de N caractères de seulement 1 et 0 s, où un 1 représente une vache infectée et un 0 représente une vache non infectée après un certain nombre de nuits.

FORMAT DE SORTIE
Afficher un seul entier : le nombre minimum de vaches qui auraient pu commencer à souffrir de la maladie.

EXEMPLE D’ENTRÉE :
5
11111
EXEMPLE DE SORTIE :
1
Supposons que la vache du milieu soit la seule à être infectée au départ. Les vaches seraient alors infectées dans l’ordre suivant :

0 nuit : 00100 (la troisième vache est initialement infectée)
1 nuit : 01110 (les deuxième et quatrième vaches sont désormais infectées)
2 nuits : 11111 (les première et cinquième vaches sont désormais infectées)
3 nuits : 11111 (toutes les vaches étaient déjà infectées, donc aucune vache supplémentaire n’est infectée)

Après deux nuits ou plus, l’état final des vaches ressemblerait à l’entrée. Il existe de nombreux autres états initiaux et nombres de nuits qui auraient pu produire l’état d’entrée, tels que :

0 nuits : 10001
1 nuit:11011
2 nuits:11111
ou:

0 nuits:01001
1 nuit:11111
ou:

0 nuits:01000
1 nuit : 11100
2 nuits : 11 110
3 nuits : 11111
Tous ces états initiaux contiennent au moins une vache infectée.

EXEMPLE D’ENTRÉE :
6
011101
EXEMPLE DE SORTIE :
4
Le seul état initial et le seul nombre de nuits qui auraient pu conduire à cet état final sont si aucune nuit ne s’est écoulée et que chacune des quatre vaches infectées dans l’entrée a commencé avec la maladie.

NOTATION :

* Entrées 3-7 : N≤1000
* Entrées 8-12 : Aucune contrainte supplémentaire.

J’avais besoin de résoudre cette question en utilisant C++.

Ce que j’ai essayé :

J’ai essayé de penser à une solution, mais maintenant je pense que je sais seulement comment faire l’inverse de cette question 🙁 Je n’arrive pas à trouver de solution. S’il vous plaît, aidez-moi ! Je suis le genre de personne qui a besoin de résolvez une question quand je la vois. Je ne suis qu’un débutant, alors aidez-moi !

Solution 1

Voir Comment puis-je résoudre ce problème pour toutes les contraintes[^] pour les solutions suggérées.
https://www.codeproject.com/script/Answers/Post.aspx?aid=5374347#
[edit]

Citation:

J’avais besoin de résoudre cette question en utilisant C++.

Le choix de la langue n’a pas d’importance. La clé de ces problèmes consiste à déterminer les étapes logiques dont vous avez besoin pour trouver la solution.
[/edit]

コメント

タイトルとURLをコピーしました