Это код для поворота матрицы по часовой стрелке и против часовой стрелки на k
элементах. Я получаю сообщение об ошибке, не могу найти символ при запуске этого кода. Если я запускаю это по отдельности, я заметил еще одну ошибку, заключающуюся в том, что он не может вращаться против часовой стрелки для элементов более 3 × 3, независимо от того, увеличиваю я M
или N
, он не может вращаться против часовой стрелки.
Main
import java.lang.*;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int R=sc.nextInt();
int C=sc.nextInt();
int matrix[][]=new int[R][C];
for(int i=0;i<R;i++){
for(int j=0;j<C;j++){
if(sc.hasNext()){
int a=sc.nextInt();
matrix[i][j]=a;
}
}
}
int rot=sc.nextInt();
int matrix2[][]=matrix.clone();
sc.close();
Anti a=new Anti();
a.rotatematrix(R, C, matrix,rot);
clock c=new clock();
c.antirotatematrix(R,C,matrix2,rot);
}
}
класс Anti
class Anti{
public void antirotatematrix(int m,
int n, int mat[][],int rot)
{
int row = 0, col = n-1;
int prev, curr;
System.out.println("Anticlockwise Rotation");
for( int a=0;a<rot;a++)
{ while (row < m && col < n )
{
if (row+1 == m || col == 0) {
break; }
prev = mat[row + 1][col];
for (int i = col; i>= 0; i--)
{
curr = mat[row][i];
mat[row][i] = prev;
prev = curr;
}
row++;
for (int i = row; i < m; i++)
{
curr = mat[i][0];
mat[i][0] = prev;
prev = curr;
}
n--;
if (row < m) {
for (int i = n-2; i <= col; i++)
{
curr = mat[m-1][i];
mat[m-1][i] = prev;
prev = curr;
}
}
m--;
if (col <= n)
{
for (int i = m-1; i >= row; i--)
{
curr = mat[i][col];
mat[i][col] = prev;
prev = curr;
}
}
col++;
}
}
for (int i = 0; i < m+1; i++) {
{
for (int j = 0; j < n+1; j++)
System.out.print( mat[i][j] + " ");
System.out.print("\n");
}
}
}
}
класс Clock
class clock{
public void rotatematrix(int m,
int n, int mat[][],int rot)
{
int row = 0, col = 0;
int prev, curr;
int matri[][]=new int[m][n];
System.out.println("Clockwise Rotation");
for(int b=0;b<rot;b++){
while (row < m && col < n)
{
if (row + 1 == m || col + 1 == n)
break;
prev = mat[row + 1][col];
for (int i = col; i < n; i++)
{
curr = mat[row][i];
mat[row][i] = prev;
prev = curr;
}
row++;
for (int i = row; i < m; i++)
{
curr = mat[i][n-1];
mat[i][n-1] = prev;
prev = curr;
}
n--;
if (row < m)
{
for (int i = n-1; i >= col; i--)
{
curr = mat[m-1][i];
mat[m-1][i] = prev;
prev = curr;
}
}
m--;
if (col < n)
{
for (int i = m-1; i >= row; i--)
{
curr = mat[i][col];
mat[i][col] = prev;
prev = curr;
}
}
col++;
}
}
for (int i = 0; i < m+1; i++) {
{
for (int j = 0; j < n+1; j++)
System.out.print( mat[i][j] + " ");
System.out.print("\n");
}
}
}
}