Su código gira su matriz “en sentido antihorario”.
Al hacerlo, empuja el 1 a la segunda posición, borrando el 2 que estaba allí.
Luego, empuja ese 1 a la tercera posición, borrando los 3 que estaban allí.
Si lo cambiara para que girara “en sentido horario”, casi funcionaría, casi porque cuando llegara al último elemento, se habría ido …
Como dice Grigory, estás haciendo la operación en su lugar. No puedes hacer eso.
Debe implementar un mecanismo para realizar un seguimiento de los datos antiguos para que lo tenga todo a medida que avanza por la matriz.
Tendrás que usar algo de almacenamiento temporal.
La más fácil de entender (pero quizás la más difícil de implementar) sería una matriz local del mismo tamaño que la original.
- ¿Hay un problema DP estándar similar a SPOJ Farida?
- ¿Cuál es la diferencia entre el recorrido del gráfico dirigido y el no dirigido (específicamente en C)?
- ¿Dónde puedo encontrar una comprensión realmente fácil y rápida de todas las estructuras de datos y algoritmos?
- ¿Cuál es un buen algoritmo para priorizar mensajes DENTRO de su bandeja de entrada?
- ¿Existen tipos de programas de software que involucren matemáticas, pero que puedan resolver problemas cotidianos (es decir, no un motor de juego de física completo o un nuevo algoritmo criptográfico)?
Si pasa algún tiempo pensando en ello, visualice “burbujear” el primer elemento (como una especie de burbuja) hasta el final de la matriz. Eso efectivamente será un giro a la izquierda por uno. Solo requerirá una operación de intercambio simple.