DHU 二维数组 阵列

news2024/11/15 10:25:09

输出范例给的不工整

思路及代码 

写的不优雅

分为三部分

枚举输出 n = 1-11

规律求出 n >= 12 的矩阵

输出需要的矩阵,把每一行存成一个字符串,方便左右对齐

#include<iostream>
#include<cmath>
#include<iomanip>
#include<string>
using namespace std;

int main(){
    //input 多组 n int 1<= <=99
    int n;
    //solution 规律如图
    int sum = 0;
    while (cin >> n){
        if (sum >= 1){
            cout << endl;
        }
        sum++;
    //edge case:1-11
        if (1 <= n && n<= 11){
                   switch(n){
                       case 1:
                           cout << 1 << endl;
                           break;
                       case 2:
                           cout << 1 << endl << 2 <<endl;
                           break;
                       case 3:
                           cout << 1 << endl << 2 << ' ' << 3 << endl;
                           break;
                       case 4:
                           cout << 1 << ' ' << 4 << endl << 2 << ' ' << 3 << endl;
                           break;
                       case 5:
                           cout << ' ' << ' ' << 5 << endl << 1 << ' ' << 4 << endl << 2 << ' ' << 3 <<endl;
                           break;
                       case 6:
                           cout << 6 << ' ' << 5 << endl << 1 << ' ' << 4 << endl << 2 << ' ' << 3 << endl;
                           break;
                       case 7:
                           cout << 7 << ' ' << 6 << ' ' << 5 << endl << ' ' << ' ' << 1 << ' ' << 4 << endl << ' ' << ' ' << 2 << ' ' << 3 << endl;
                           break;
                       case 8:
                           cout << 7 << ' ' << 6 << ' ' << 5 << endl << 8 << ' ' << 1 << ' ' << 4 << endl << ' ' << ' ' << 2 << ' ' << 3 << endl;
                           break;
                       case 9:
                           cout << 7 << ' ' << 6 << ' ' << 5 << endl << 8 << ' ' << 1 << ' ' << 4 << endl << 9 << ' ' << 2 << ' ' << 3 << endl;
                           break;
                       case 10:
                           cout << ' ' << 7 << ' ' << 6 << ' ' << 5 << endl << ' ' << 8 << ' ' << 1 << ' ' << 4 << endl << ' ' << 9 << ' ' << 2 << ' ' << 3 << endl << 10 << endl;
                           break;
                       default:
                           cout << ' ' << 7 << ' ' << ' ' << 6 << ' ' << 5 << endl << ' ' << 8 << ' ' << ' ' << 1 << ' ' << 4 << endl << ' ' << 9 << ' ' << ' ' << 2 << ' ' << 3 << endl << 10 << ' ' << 11 << endl;
                   }
                   continue;
               }
        //normal case:
        int flag = 1;
        int t = 1;
        int i = 4;
        int j = 4;
        string list[10][10];
        list[4][4] = to_string(t);
        while (t < n){
            if (flag%2 == 1){
                for (int k = 1; k <= flag; k++){
                    i++;
                    if( t+1 <= n){
                        list[i][j] = to_string(++t);
                    }else{
                        break;
                    }
                }
                for (int k = 1; k <= flag; k++){
                    j++;
                    if( t+1 <= n){
                        list[i][j] = to_string(++t);
                    }else{
                        break;
                    }
                }
                flag++;
            }else{
                for (int k = 1; k <= flag; k++){
                    i--;
                    if( t+1 <= n){
                        list[i][j] = to_string(++t);
                    }else{
                        break;
                    }
                }
                for (int k = 1; k <= flag; k++){
                    j--;
                    if( t+1 <= n){
                        list[i][j] = to_string(++t);
                    }else{
                        break;
                    }
                }
                flag++;
            }
            
        }
        //output anslist[]
        string anslist[10];
        for(int row = 0; row <= 9; row++){
            for (int col = 0; col <= 9; col++){
                if (list[row][col] != ""){
                    if (stoi(list[row][col]) <= 9){
                        anslist[row] += " " + list[row][col] + " ";
                    }else if ((list[row][col+1] == "" && col+1 <= 9) || col == 9){
                        anslist[row] += list[row][col];
                    }else{
                        anslist[row] += list[row][col] + " ";
                    }
                }
            }
        }
        int max_len = 0;
        for (string ele: anslist){
            max_len = (int)ele.length() > max_len ? (int) ele.length() : max_len;
        }
        //偶数右对齐
        if((int)sqrt(n)%2 == 0){
            for (string ele: anslist){
                if(ele != ""){
                    cout << setw(max_len) << setfill(' ') << ele << endl;
                }
            }
        }else{ //奇数左对齐
            for (string ele: anslist){
                if(ele != ""){
                    cout << ele << endl;
                }
            }
        } 
    } 
    return 0;
}



参考:1️⃣ C/C++中string和int相互转换的常用方法_string转int-CSDN博客

2️⃣ 【DHUOJ】进阶59_明明在上学的时候,参加数学兴趣班。在班上,老师介绍了一种非常有趣的阵列。 该阵-CSDN博客

3️⃣ C++string与int的相互转换(使用C++11)_c++ string转int-CSDN博客

4️⃣ C++中求string类型字符串的长度的方法_string的长度c++-CSDN博客

5️⃣ https://bbs.csdn.net/topics/190135371

 收获:

1️⃣string转 int to_string(...)

int 转 string 头文件 string 函数 stoi(...)

2️⃣复习 string 类长度 name.length() long 类型

菜菜,不是教程,做题和学习记录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2057746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 设计模式(4. 建造者模式)

建造者模式&#xff08;也被成为生成器模式&#xff09;&#xff0c;是一种创建型设计模式&#xff0c;软件开发过程中有的时候需要创建很复杂的对象&#xff0c;而建造者模式的主要思想是将对象的构建过程分为多个步骤&#xff0c;并为每个步骤定义一个抽象的接口。具体的构建…

计算机毕业设计 公寓出租系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

消防认证-火灾显示盘GB 17429-2011

一、消防认证 消防认证是指消防产品符合国家相关技术要求和标准&#xff0c;且通过了国家认证认可监督管理委员会审批&#xff0c;获得消防认证资质的认证机构颁发的证书&#xff0c;消防产品具有完好的防火功能&#xff0c;是住房和城乡建设领域验收的重要指标。 二、认证依据…

软考高项—项目采购管理总结

采购管理包括规划采购管理、实施采购和控制采购3个过程。 管理领域管理过程定义作用频率项目采购管理规划采购管理记录项目采购决策、明确采购方法&#xff0c;及识别潜在卖方的过程。确定是否从项目外部获取货物和服务&#xff0c;如果是&#xff0c;则还要确定将在什么时间、…

运维学习————nginx2-配置详解及负载均衡

目录 一、配置文件详解 1.1、结构 1.2、重要配置解释 1.3、详细配置 全局配置 Events HTTP 服务器配置 server虚拟主机配置 location URL匹配配置 1.4、完整配置 二、负载均衡 2.1、概念 2.2、集群规划及实现 2.3、具体实现 2.3.1、克隆 2.3.2、修改tomcat1配…

【python】Python中的日志模块logging使用技巧与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

软件设计师全套备考系列文章5 -- 数据结构的基本概念与算法

软考-- 软件设计师&#xff08;5&#xff09;-- 数据结构的基本概念与算法 文章目录 软考-- 软件设计师&#xff08;5&#xff09;-- 数据结构的基本概念与算法前言一、基本概念二、算法 前言 考试时间&#xff1a;每年5月、11月&#xff0c;软件设计师每年都会开考。 考试条件…

【Linux修行路】文件系统之缓冲区

目录 ⛳️推荐 一、先看现象 二、用户缓冲区的引入 三、用户缓冲区的刷新策略 四、为什么要有用户缓冲区 五、现象解释 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 一、…

BUG——imx6u开发_结构体导致的死机问题(未解决)

简介&#xff1a; 最近在做imx6u的linux下裸机驱动开发&#xff0c;由于是学习的初级阶段&#xff0c;既没有现成的IDE可以使用&#xff0c;也没有GDB等在线调试工具&#xff0c;只能把代码烧写在SD卡上再反复插拔&#xff0c;仅靠卑微的亮灯来判断程序死在哪一步。 至于没有使…

新加坡服务器托管:数字化引擎,企业托管的未来明星

在新加坡这片充满活力的土地上&#xff0c;托管服务正逐渐成为企业数字化转型与国际化战略的重要支撑。凭借其独特的地理位置、完善的基础设施、严格的法规环境以及政府对科技创新的积极推动&#xff0c;新加坡不仅成为了亚太地区的经济枢纽&#xff0c;也成为了全球企业托管业…

鸿蒙HarmonyOS实战:IPC与RPC设备内进程通信

基本 IPC&#xff08;Inter-Process Communication&#xff09;与RPC&#xff08;Remote Procedure Call&#xff09;用于实现跨进程通信&#xff0c;不同的是前者使用Binder驱动&#xff0c;用于设备内的跨进程通信&#xff0c;后者使用软总线驱动&#xff0c;用于跨设备跨进…

Leetcode JAVA刷刷站(53)最大子数组和

一、题目概述 二、思路方向 这个问题是一个经典的算法问题&#xff0c;称为“最大子序和”&#xff08;Maximum Subarray Problem&#xff09;。解决这个问题的一个高效方法是使用“Kadanes Algorithm”&#xff0c;它只需要遍历数组一次&#xff0c;就能在 O(n) 时间复杂度内…

模拟JDBC本质

以记事本形式模拟 编译所有文件,并运行 如果换成Oracle 重新编译并运行 利用反射,但是这种方式,还是需要重新编译 改成Oracle 再次编译 以读取配置文件的方式 编译之后 以后无需再次编译源码 只需要改配置文件 修改配置

如何将网站地图Sitemap提交至百度、谷歌及Bing搜索引擎

原文&#xff1a;如何将网站地图Sitemap提交至百度、谷歌及Bing搜索引擎 - 孔乙己大叔 (rebootvip.com) 在当今高度竞争的互联网环境中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;对于网站的可见性和成功至关重要。网站地图&#xff08;Sitemap&#xff09;&#xff…

新媒体智能化与定制开发 AI 智能名片小程序在工业 4.0 中的作用

摘要&#xff1a;本文探讨了新媒体作为客体所具有的智能以及在工业 4.0 进程中的重要性。分析了人赋予新媒体的四个方面智能&#xff0c;包括感知智能、运算智能、认知智能和智慧行为。同时&#xff0c;结合定制开发 AI 智能名片小程序这一具体案例&#xff0c;阐述了新媒体在工…

【ECMAScript性能优化的技巧与陷阱】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

csrf漏洞(三)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言&#xff1a; 本文依靠phpstudy以及dvwa靶场进行操作&#xff0c;具体搭建流程参考&#xff1a;xss漏洞&#xff08;二&#xff0c;xss靶场搭建以及简单利用&#xff09; 前篇…

有头单向链表的函数操作(详细版)

【1】代码展示 #include <stdio.h> #include <stdlib.h> typedef char datatype; // 重定义字符类型 typedef struct node {datatype data; // 数据用来存数据struct node *next; // 指针域用来存下一个节点的地址 } Node_t, *Node_p; // 重定义结构体数据…

5G三防加固平板电脑的特点与应用

随着信息技术的不断发展&#xff0c;5G通信技术也逐渐融入到三防平板电脑中。5G三防加固平板电脑是一种专为恶劣环境和工作场景设计的移动设备。它结合了5G通信技术、三防功能和加固设计&#xff0c;可以为用户带来更加高效、稳定、安全的使用体验。下面&#xff0c;我们来看看…

手把手系列 | 使用Milvus、Llama 3、Ollama、LangChain本地设置RAG应用

随着 Llama、Mistral、Gemma 等开源大语言模型&#xff08;LLM&#xff09;的出现&#xff0c;我们越来越能感受到 LLM 的力量&#xff0c;而本地运行基于 LLM 的 RAG 应用的需求越来越强烈。在将应用推至生产环境前&#xff0c;我们往往都需要先本地运行和测试。 因此&#xf…