Un défi de programmation commun consiste à énumérer tous les arrangements possibles de la chaîne ou de l'entier donné. Ce problème doit être résolu.
Logique d'arrangement
Le noyau logique derrière l'arrangement est très simple:
La disposition de l'élément unitaire est l'élément lui-même.
La fonction de récursivité suivante génère disposée: (Ici, nous devons insérer le même bloc de code que le texte d'origine, mais le décrire dans un langage plus naturel)
La fonction récursive génère toutes les dispositions possibles en itérant la disposition de chaque élément et les éléments restants. Lorsqu'il n'y a qu'un seul élément, la récursivité se termine et l'élément lui-même est disposé.
C # implémentation
La fonction C # suivante est générée efficacement pour générer efficacement toute la disposition de la chaîne donnée et construit chaque arrangement à partir d'un arrangement plus petit par récursivement:
Cette fonction génère tous les arrangements en s'appelant récursivement et utilise
des caractères d'échange de fonctions pour générer différentes combinaisons d'arrangement.fournit un résultat de sortie plus clair.
class Program { public static void GetPer(char[] list) { int x = list.Length - 1; GetPer(list, 0, x); } private static void GetPer(char[] list, int k, int m) { if (k == m) { Console.WriteLine(new string(list)); // 使用更清晰的输出方式 } else for (int i = k; i <= m; i++) { Swap(ref list[k], ref list[i]); GetPer(list, k + 1, m); Swap(ref list[k], ref list[i]); } } static void Swap(ref char a, ref char b) { char temp = a; a = b; b = temp; } static void Main() { string str = "sagiv"; char[] arr = str.ToCharArray(); GetPer(arr); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!