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

本文介绍如何处理将一个n*n字符矩阵左转90度的问题。通过观察发现,矩阵的行号变为列号,列号颠倒顺序变为行号。实际上并不需要真正旋转数组,只需从矩阵右侧开始读取字符并按顺序输出,即可达到旋转效果。

习题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; 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值