Registro de preguntas de OJ Brush: Número de pregunta de pregunta de Joseph Ring: 657

Número de título de pregunta de Joseph Ring: 657

Requisitos de la pregunta:
Hay n personas numeradas 1, 2, ..., n para formar un círculo, dada una contraseña m, comience desde la primera persona para informar el número, informe m para detener el número y la persona que informa m sale del círculo , Y luego vuelva a informar el recuento del siguiente, detenga el recuento cuando se informe a m, e informe m fuera de la vuelta, ..., continúe de la siguiente manera, hasta que todos estén fuera de la vuelta. Ingrese el valor de nym en el teclado, diseñe el programa para generar la secuencia de n personas que salen del círculo.

Ingrese la descripción
Ingrese el número de personas n en el círculo inicial, ocupe una línea.
Ingrese la contraseña m, ocupe una línea.
Descripción de salida.
Imprima el orden de las n personas que abandonaron el círculo, separadas por espacios, y hay un espacio después del último elemento.
Ejemplo de entrada
10
3
Ejemplo de salida
3 6 9 2 7 1 8 5 10 4

Ideas para la resolución de problemas: el
punto clave es recorrer la matriz, y aquellos que han dejado el equipo no emiten juicios.
Primero, use el número total de entrada n para declarar una matriz de longitud n, y asigne los elementos de la matriz a 1 ~ n. Recorra la matriz de un extremo a otro. Defina un recuento de contador para registrar la posición de la persona que informa el recuento actual. Si es igual am, envíe el elemento de matriz. En este momento, restablezca el recuento del contador a 0, porque la siguiente persona reiniciará el recuento y Asigne el valor del elemento de matriz a -1, lo que significa que esta persona ha sido retirada de la cola y el número total de personas n también se reduce en 1. Si se encuentra -1 en el siguiente ciclo, continúe y no más juicios. Hasta que n sea 0, salga del ciclo. La salida de la secuencia de sacar de cola está completa.
Implementación de recorrido de bucle de bucle de matriz:
use el índice de variable de bucle, si el índice es menor que el valor máximo de subíndice de la matriz, el índice se incrementa en 1 y luego se atraviesa; si el índice es mayor o igual que el valor máximo de subíndice de la matriz, tome el resto del subíndice máximo, Calcule el valor del subíndice que debe alcanzarse en este momento cuando la matriz es circular.

Código de despacho de aduana:

#include <iostream>

using namespace std;

int main() {
    
    
	int n, m, count = 0, index = 0;
	
	cin >> n >> m;
	
	const int LEN = n;
	int arr[LEN];
	
	for (int i = 0; i < LEN; i++) {
    
    
		arr[i] = i + 1;
	}
	
	while (n > 0) {
    
    
		if (index >= LEN) {
    
    
			index = index % LEN;
		}
		
		if (arr[index] != -1) {
    
    
			count++;
		}
		if (count == m) {
    
    
			count = 0;
			cout << arr[index] << ' ';
			arr[index] = -1;
			n--;
		}
		
		index++;
	}
	
	return 0;
} 

completar.

Supongo que te gusta

Origin blog.csdn.net/weixin_45711556/article/details/108571525
Recomendado
Clasificación