Dernier dictionnaire d'algorithmes en langage C (écrit par Haruhiko Okumura / Revue technique de la première édition 1991: 249 pages)
C'est un algorithme qui remplace les blocs dans une chaîne de caractères.
(Ce qui suit est tiré du matériel de référence)
Déplacer le bloc 12345 après le bloc abcd dans une commande d'éditeur, par exemple le texte xyz12345abcdefg, donne xyzabcd12345efg. Cette opération consiste également à échanger 12345 et abcd, ou à faire pivoter 12345abcd vers la droite de 4 caractères.
Cette fois, nous avons mis en place un processus pour remplacer les mots «PRINCIPES DE PROGRAMMATION», qui se composent de deux mots «PROGRAMMATION» et «PRINCIPES», par «PRINCIPES DE PROGRAMMATION».
moveblock.c
/*Bloquer le mouvement du bloc*/
#include <stdio.h>
#include <stdlib.h>
char sentense[] = "PROGRAMMINGPRINCIPLES";
int main(void) {
printf("%s\n",sentense);
//Appelez la fonction de déplacement de chaîne
rotate(0, 10, 20);
printf("%s\n", sentense);
return EXIT_SUCCESS;
}
//Fonction d'inversion de chaîne
//Si la longueur de la chaîne est impaire, seul le caractère central n'est pas inversé
void reverse(int i,int j){
//Variable Tmp à remplacer
int t;
while(i < j){
t = sentense[i];
sentense[i] = sentense[j];
sentense[j] = t;
//Décale la position de la chaîne de caractères à traiter une par une
i++;
j--;
printf("%s i=%d j=%d (reverse)\n", sentense, i, j);
}
}
//Fonction de mouvement des cordes
//Appelez la fonction inverse
//Premier argument: position de départ de la partie gauche de la chaîne de caractères à remplacer
//Deuxième argument: position de départ de la partie droite de la chaîne de caractères à remplacer
//Troisième argument: toute la chaîne de caractères à remplacer
void rotate(int left, int mid, int right){
reverse(left, mid);
reverse(mid + 1,right);
reverse(left, right);
}
Le résultat était comme prévu.
result.txt(Tout)
Success #stdin #stdout 0s 4488KB
PROGRAMMINGPRINCIPLES
GROGRAMMINPPRINCIPLES i=1 j=9 (reverse)
GNOGRAMMIRPPRINCIPLES i=2 j=8 (reverse)
GNIGRAMMORPPRINCIPLES i=3 j=7 (reverse)
GNIMRAMGORPPRINCIPLES i=4 j=6 (reverse)
GNIMMARGORPPRINCIPLES i=5 j=5 (reverse)
GNIMMARGORPSRINCIPLEP i=12 j=19 (reverse)
GNIMMARGORPSEINCIPLRP i=13 j=18 (reverse)
GNIMMARGORPSELNCIPIRP i=14 j=17 (reverse)
GNIMMARGORPSELPCINIRP i=15 j=16 (reverse)
GNIMMARGORPSELPICNIRP i=16 j=15 (reverse)
PNIMMARGORPSELPICNIRG i=1 j=19 (reverse)
PRIMMARGORPSELPICNING i=2 j=18 (reverse)
PRIMMARGORPSELPICNING i=3 j=17 (reverse)
PRINMARGORPSELPICMING i=4 j=16 (reverse)
PRINCARGORPSELPIMMING i=5 j=15 (reverse)
PRINCIRGORPSELPAMMING i=6 j=14 (reverse)
PRINCIPGORPSELRAMMING i=7 j=13 (reverse)
PRINCIPLORPSEGRAMMING i=8 j=12 (reverse)
PRINCIPLERPSOGRAMMING i=9 j=11 (reverse)
PRINCIPLESPROGRAMMING i=10 j=10 (reverse)
PRINCIPLESPROGRAMMING
Recommended Posts