首页 > 编程语言 >经典算法之图形问题

经典算法之图形问题

时间:2024-01-05 18:22:36浏览次数:49  
标签:规律 奇数 int 插入 算法 数组 经典 图形

图形问题的万金解决方法就是创建一个二维数组,然后将填数组,最后打印数组就行了。其本质还是找出图形的规律。

首先来找规律,先从外形上来找。

奇数高,看图形,是上下左右对称的。所以只找上半区的规律。

然后首行比其他行少两个字符也就是多两个空格,最外层都是A,数组可以提前都赋值。只需要管中间部分

从中间部分看,是A和B交错的,第0行是A,第1行B主导,第二行A主导,所以是偶数行A主导,奇数行B主导,所以数组可以提前赋值,将A和B都填进去,最后找规律将A和B在不同行插入相应的位置就好了。

偶数行插入B,奇数行插入A。

第一行插入0个A

第三行插入2个A(在 第2列和对称)

第五行插入4个A(在 2 、4)位置

因为奇偶规律一致,所以明显第X行,奇数行要插的位置是 2 ,4 。。。。X-1,然后对称

偶数行就是 1,3,。。。X-1,然后对称。

 最后将上面的元素复制给下面输出就行。

#include <stdio.h>
int main ( ) {
    char c[81][81] = {'\0'} ;
    int n = 0 ;
    char x , y ;
    while ( rewind(stdin) , scanf("%d %c %c",&n,&x,&y ) != EOF ) {
        for ( int i = 0 ; i <  ( n + 1 ) / 2 ; i ++ ) {
            for (int j = 0; j < n; j++) {
                if (i % 2 == 0) {
                    c[i][j] = y ;
                } else {
                    c[i][j] = x ;
                    if( j == 0 || j == n-1 ) {
                        c[i][j]=y ;
                    }
                }
            }
        }
        c[0][0]=' ' ;
        c[0][n-1]=' ' ;
        for (int j = 2 ; j <=  ( n + 1 ) / 2   ; j += 2 ) {
            for ( int i = 1 ; i <= j ; i += 2 ) {
                c[j][i] = x ;
                c[j][n-i] = x ;
            }
        }
        for (int j = 3 ; j <=  ( n + 1 ) / 2 ; j += 2 ) {
            for ( int i = 2 ; i <= j ; i += 2 ) {
                c[j][i] = y ;
                c[j][n-i] = y ;
            }
        }
        for( int i = 0 ; i < ( n + 1 ) / 2 ; i ++ ) {
            for( int j = 0 ; j < n ; j ++ ) {
                c[n - 1 - i][j] = c[i][j];
            }
        }
        
        for( int i = 0 ; i <=  n  ; i ++ ) {
            printf("%s\n", c[i] ) ;
        }
   }
    return 0 ;
}

运行结果:

标签:规律,奇数,int,插入,算法,数组,经典,图形
From: https://www.cnblogs.com/llllmz/p/17942251

相关文章

  • 深入理解经典红黑树 | 京东物流技术团队
    本篇我们讲红黑树的经典实现,Java中对红黑树的实现便采用的是经典红黑树。前一篇文章我们介绍过左倾红黑树,它相对来说比较简单,需要大家看完上篇再来看这一篇,因为旋转等基础知识不会再本篇文章中赘述。本篇的大部分内容参考《算法导论》和Java实现红黑树的源码,希望大家能够有耐心......
  • 排序算法
    冒泡排序思想:1、一个无序的数组,n个元素,一共需要排序n-1轮2、在每一轮中,从数组第0位开始,比较相邻两个元素,如果与需求逆序,就交换这两个元素,在每一轮中,可以将当前最大(最小)的元素交换到最后,3、直到执行完n-1轮,没有需要比较的元素为止。代码实现:publicstaticvoidbubSort(in......
  • 深入理解经典红黑树 | 京东物流技术团队
    本篇我们讲红黑树的经典实现,Java中对红黑树的实现便采用的是经典红黑树。前一篇文章我们介绍过左倾红黑树,它相对来说比较简单,需要大家看完上篇再来看这一篇,因为旋转等基础知识不会再本篇文章中赘述。本篇的大部分内容参考《算法导论》和Java实现红黑树的源码,希望大家能够有耐心......
  • 生物识别应用锁控二合一和三合一芯片的算法描述和特点
    主控集成电容触控按键(二合一),外接指纹模组方案特点•主控:采用集成TouchKey的芯片ACM32FP0•算法:采用金融级安全芯片ACH512/高性能算法芯片ACM32FP4•非接:采用A32NQ32C3读卡芯片•支持指纹、按键、钥匙、非接、蓝牙等多种开锁方式•指纹、密码安全存储、敏感信息不外泄•提供......
  • 在Python中,有几个库可以帮助我们自动寻找最适合的机器学习模型和参数。这里有两个主要
    在Python中,有几个库可以帮助我们自动寻找最适合的机器学习模型和参数。这里有两个主要的库:1.**lazypredict**¹:这个库可以快速地比较多种机器学习算法的性能,从而帮助我们选择最佳的算法。它可以在循环中迭代多个模型,这通常需要一些时间,但是使用lazypredict可以克服这个限制。下......
  • 【教3妹学编程-算法题】经营摩天轮的最大利润
    3妹:“打个中国结,再系个红腰带,愿善良的人们天天好运来,你勤劳生活美,你健康春常在,你一生的忙碌为了笑逐颜开。”2哥 :3妹,元旦快乐啊。3妹:2哥元旦快乐~。2哥:祝新的一年,3妹技术突飞猛进,工资涨涨涨。3妹:祝新的一年,2哥能够找到女朋友,哈哈哈......
  • [Mac软件]Boxy SVG 4.20.0 矢量图形编辑器
    BoxySVG是一款入门级矢量图形编辑器,具有全套基本功能、易于学习的选项卡式界面和可自定义的键盘快捷键。有了它,您可以轻松创建横幅、图标、按钮、图形、界面草图,甚至有趣的表情包。编辑器支持使用多种工具创建和编辑矢量对象,用颜色渐变装饰它们,用文本元素补充它们。元数据编辑功......
  • Landsat 7地表温度计算:单窗算法的ENVI、ERDAS实现
    本文介绍基于ENVI与ERDAS软件,对Landsat7遥感影像数据加以单窗算法的地表温度(LST)反演操作。(基于ENVI与ERDAS的Landsat7ETM+单窗算法地表温度(LST)反演)1原理部分与前期操作准备首先说一个批量计算LST的方法——基于GEE的Landsat地表温度反演可以看谷歌地球引擎GEE批量计算Land......
  • 智能分析网关V4算法配置步骤2.0——睡岗检测
    AI智能分析网关V4是TSINGSEE青犀视频旗下的一款高效分析网关,可分别作为上级或下级平台进行级联,还可实现人体行为检测、车辆事件检测、环境卫生检测与消防事件检测等等,广泛应用在工地、工厂、园区、楼宇、校园、仓储等场景中。将智能分析网关V4结合我们的视频融合平台EasyCVR一起使......
  • 生物识别应用指纹的算法是什么样的?有什么性能?
    方案特点•采用金融级安全芯片ACH512的指纹模组,指纹和密码安全存储,云端数据安全传输•采用高性能指纹专用安全MCU芯片ACM32FP4,支持小点阵图像算法处理•支持80*64、88*112、96*96、160*160、192*192等像素传感器•已适配传感器厂家:FPC、比亚迪、贝特莱、芯启航、集创、迈瑞微......