李响


私信TA

用户名:dotcpp0664563

访问量:1926

签 名:

等  级
排  名 289
经  验 5665
参赛次数 0
文章发表 19
年  龄 0
在职情况 学生
学  校 淄博职业学院
专  业

  自我简介:

import java.util.Scanner;

public class 螺旋加密 {
   public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int R = sc.nextInt();
       int C = sc.nextInt();
       String str = sc.nextLine();
       str = str.trim();
       char[][] arr =new char[R][C];
       int o = R*C;
       int ten = 0;
       String two = "";
       int n = 0;
       String STR = "";
       for (int i = 0; i < str.length(); i++) {             //按要求处理为二进制字符串
           ten = str.charAt(i);
           if (str.charAt(i)==32){
               ten = 0;
               two = Integer.toString(ten,2);
           }else {
               ten = ten-64;
               two = Integer.toString(ten,2);
           }
           n = 5-two.length();
           for (int j = 0; j < n; j++) {
               two = "0"+two;
           }
           STR = STR+""+two;
           n = 0;
       }
       o = o-STR.length();
       for (int i = 0; i < o; i++) {
           STR = STR+"0";
       }
       //System.out.println(STR);
       int z = 0;                //左
       int y = C-1;              //右
       int s = 0;                //下
       int x = R-1;              //上
       int i = 1;
       int a = 0;
       for (int j = 0; j < STR.length(); j++) {                    //将该字符串按回型录入二维数组
           if (i%4==1&&z<=y){
               for (int k = z; k <= y; k++) {
                   arr[s][k] = STR.charAt(a);
                   a++;
               }
               s++;
               i++;
           }else if (i%4==2&&s<=x){
               for (int k = s; k <= x; k++) {
                   arr[k][y] = STR.charAt(a);
                   a++;
               }
               y--;
               i++;
           }else if (i%4==3&&y>=z){
               for (int k = y; k >= z; k--) {
                   arr[x][k] = STR.charAt(a);
                   a++;
               }
               x--;
               i++;
           }else if (i%4==0&&x>=s){
               for (int k = x; k >= s; k--) {
                   arr[k][z] = STR.charAt(a);
                   a++;
               }
               z++;
               i++;
           }
       }
       for (int j = 0; j < R; j++) {
           for (int k = 0; k < C; k++) {
               System.out.print(arr[j][k]);
           }
       }
   }
}

 

0.0分

1 人评分

  评论区

  • «
  • »