LHL算法入门经典 习题3-5旋转(ratate)

习题3-5旋转(ratate)

问题描述:

输入一个n*n字符矩阵,把它左转90°后输出 发现规律:同一行的行号变成列号,列好颠倒顺序变成行号

其实不用真的“旋转”字符数组, 只是换个角度看原来的矩阵。
也就是把原矩阵的右边想象成上边,就是直接从原矩阵的右边开始读入字符输出。

# include<iostream>
# include<stdio.h>
# include<string.h>
# define MAXN 100+10
char s[MAXN][MAXN];
char ss[MAXN][MAXN];

using namespace std;
int main()
{
    int n;
    scanf("%d",&n); 
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)scanf("%d",&s[i][j]);
    //关键代码
    for (int i = 0; i < n; i++)
    {
        for (int j = n-1; j >= 0; j--)
        {
            ss[j][i]=s[i][n-1-j];
        }
    }

    for (int i = 0; i < n; i++)
    {
       for (int j = 0; j < n; j++)
       {
           printf("%d ",ss[i][j]);
       }
       printf("\n");
    }
    

    return 0;
}

#include <stdio.h> 
#include <time.h>
#define MAXN 1000 + 10
char Array[MAXN][MAXN];
int main(){
	char temp, flag, a = 0, b = 0, n;
 	while(1){
	  flag = scanf("%c", &temp);
	  if(flag == EOF) break; 
		  if(temp != '\n')
			   Array[a][b++] = temp;
		else{
			 a++;
			 b = 0;
		 }
	}
	 n = a;
	 printf("\n");   
	 for(b = n - 1; b >= 0; b--)
	 {
		  for(a = 0; a < n; a++)
		  	 printf("%c", Array[a][b]);
		  printf("\n");
	 }
	 return 0;
}
#include<string.h>
#include <iostream>
#include <string>
#include <ctype.h>
using namespace std;
	int s[1000][1000];
	int ss[1000][1000];

int main(int argc, char *argv[])
{

    int n;
    int i,j;
    scanf("%d",&n); 
    for ( i = 0; i < n; i++)
    for (j = 0; j < n; j++)
	scanf("%d",&s[i][j]);
    for(i=0;i<n;i++)
    {
    	for(j=0;j<n;j++)
    	ss[n-j-1][i]=s[i][j];
	}
    for(i=0;i<n;i++)
    {
    	for(j=0;j<n;j++)
    	printf("%d ",ss[i][j]);
    	printf("\n");
	}
    
    return 0; 
}

发布了33 篇原创文章 · 获赞 14 · 访问量 628

猜你喜欢

转载自blog.csdn.net/Simple_questions/article/details/104983959