小楊的 X 字矩陣(舉一反三)-洛谷B3865 [GESP202309 二級]

題目描述

小楊想要構造一個 ?X 字矩陣( 為奇數),這個矩陣的兩條對角線都是半角加號 + ,其余都是半角減號 - 。例如,一個 5×5 的 X 字矩陣如下:

+---+
-+-+-
--+--
-+-+-
+---+

請你幫小楊根據給定的 打印出對應的“X 字矩陣”。

輸入格式

一行一個整數 ( 5≤N≤49,保證為奇數)。

輸出格式

輸出對應的“X 字矩陣”。

請嚴格按格式要求輸出,不要擅自添加任何空格、標點、空行等任何符號。你應該恰好輸出 N 行,每行除了換行符外恰好包含 N 個字符,這些字符要么是 +,要么是 -。

輸入輸出樣例

說明/提示

特別提醒

在常規程序中,輸入、輸出時提供提示是好習慣。但在本場考試中,由于系統限定,請不要在輸入、輸出中附帶任何提示信息。

題目鏈接地址:B3865 [GESP202309 二級] 小楊的 X 字矩陣 - 洛谷

解題思路

對于這類矩陣圖形的輸出,要求一定要熟練掌握,并能舉一反三解決類似問題(如Z字形、日字形、H形等)。

1. 觀察規律(從具體到抽象)

目標:發現X形矩陣中+和-的位置規律。
方法:用可視化例子引導思考:

# 5×5 的X形矩陣(行號i從1開始,列號j從1開始)
+---+ ?# 第1行:i=1,主對角線(i=j=1) 或 副對角線(i+j=1+5=6)
-+-+- ?# 第2行:i=2,滿足i=j=2?或 i+j=2+4=6
--+-- ?# 第3行:i=3,兩對角線交叉,可以表示為i=j=3,或者i+j=6
-+-+- ?# 第4行:i=4,主對角線i=j=4,或副對角線i+j=4+2=6
+---+ ?# 第5行:i=5,主對角線i=j=5,或副對角線i+j=5+1

思考:

  • 主對角線上的+滿足什么條件?(行號i等于列號j)
  • 副對角線上的+滿足什么條件?(行號i加列號j等于N+1)
  • 其他位置是什么符號?(-)

2. 數學建模(規律轉公式)

目標:將觀察到的規律轉化為數學條件。
核心結論:

  • 輸出“+“”的條件:i == j 或 i + j == N +1
  • 否則輸出‘’-‘’

驗證:對于5×5矩陣的中心點(3,3):同時滿足i==j和i+j==6,仍正確

3、代碼實現(分步拆解)

目標:將數學條件轉化為代碼,強調循環嵌套和條件判斷。
關鍵點:

(1)輸入矩陣大小 n

? ? ? ? ?題目保證 N?是 5~49 的奇數,所以不需要額外檢查。

(2)雙重循環遍歷矩陣

? ? ? ? ?外層循環 for (int i = 1; i < =N; i++):控制行號 i,從 1到 N。

? ? ? ? ?內層循環 for (int j = 1?j < =N; j++):控制列號 j,從 1到 N。

(3)條件判斷(判斷是否在對角線上)

? ? ? ? ?主對角線:行號 i 等于列號 j(即 i == j)。

? ? ? ? ?副對角線:行號 i 加列號 j 等于 N+1(即 i + j == N+1)。

? ? ? ? ?如果滿足任意一個條件,輸出 '+',否則輸出 '-'。

(4)輸出控制(換行處理)

? ? ? ? ?每行結束后使用 cout << endl; 換行。

代碼

#include <iostream>
using namespace std;
int main(){int N;cin>>N;for(int i=1;i<=N;i++){for(int j=1;j<=N;j++){if(i==j||i+j==N+1)cout<<'+';else cout<<'-';}cout<<endl;}return 0;
}

舉一反三(擴展思維)

變形問題:思考其他類似圖形如何實現

1. Z字形矩陣:

第一行和最后一行全 +,中間行僅副對角線 +。

if (i == 0 || i == N?|| i + j == N+1) {
? ? cout << '+';
} else {
? ? cout << '-';
}

2.?空心矩形:

僅最外層 +,內部 -。

if (i == 0 || i == N?|| j == 0 || j == N) {
? ? cout << '+';
} else {
? ? cout << '-';
}

3. N字矩陣

第一列和最后一列全 +,中間列僅對角線 +。

if(j == 1 || j == N?|| j == i){
?? ??? ??? ??? ?cout << "+";
?? ??? ??? ?}else{
?? ??? ??? ??? ?cout << "-";

常見錯誤

  • 邊界錯誤:可能混淆n和n-1(從0開始還是1開始)
  • 條件遺漏:忘記用or合并兩條對角線。
  • 輸出格式:忘記換行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96121.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96121.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96121.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據組合與合并:Pandas 數據整合全指南 +缺失值處理

數據組合與合并&#xff1a;Pandas 數據整合全指南在進行數據分析之前&#xff0c;數據清洗與整合是關鍵步驟。 遵循“整潔數據”&#xff08;Tidy Data&#xff09;原則&#xff1a; 每個觀測值占一行每個變量占一列每種觀測單元構成一張獨立的表格 整理好數據后&#xff0c;常…

c#聯合halcon的基礎教程(案例:亮度計算、角度計算和缺陷檢測)(含halcon代碼)

目錄 1.環境配置 2.案例一&#xff1a;亮度計算 halcon代碼&#xff1a; 主界面代碼&#xff1a; 3.案例二&#xff1a; 角度計算 halcon代碼&#xff1a; 主界面代碼&#xff1a; 4.案例三&#xff1a;缺陷檢測 halcon代碼&#xff1a; 主界面代碼&#xff1a; 通過…

大數據云原生是什么

"云原生"&#xff08;Cloud Native&#xff09;指的是?利用云計算原生優勢&#xff08;彈性、按需服務、自動化、分布式等&#xff09;來設計、構建、部署和運行大數據應用和工作負載的方法論與技術體系?。它不是簡單地“把大數據平臺搬到云上”&#xff0c;而是從…

Pytest項目_day16(yaml和parametrize結合)

查詢手機號歸屬地 我們首先可以在YAML文件中定義測試數據 方式一&#xff0c;使用- 注意&#xff1a;當我們需要一次傳入兩個參數時&#xff0c;需要定義兩層迭代&#xff0c;即兩層列表不夠直觀&#xff0c;容易寫錯 輸出的結果為&#xff1a; 然后我們可以將測試數據傳入test…

【Nginx指南】從核心原理到生產實踐

目錄Nginx指南&#xff1a;從核心原理到生產實踐引言&#xff1a;Nginx在現代架構中的核心地位一、Nginx核心能力與應用場景1.1 多場景適配的全能型中間件1.2 技術優勢&#xff1a;Nginx成為行業標準的關鍵二、Nginx安裝部署&#xff1a;源碼編譯與包管理方案2.1 源碼編譯&…

物體檢測

目錄 1 目標定位 2 地標檢測 3 目標檢測 4 在卷積網絡上實現滑動窗口 5 邊界框預測 6 交并比 7 非極大值抑制 8 錨框 9 YOLO算法 10 用u-net進行語義分割 11 轉置卷積 12 u-net 結構靈感 1 目標定位 你已經對圖片分類有所了解。例如通過這張圖片可以識…

es7.x es的高亮與solr高亮查詢的對比對比說明

一 solr&es高亮1.1 solr與es高亮功能解釋說明&#xff1a;1)高亮配置&#xff1a;fragmentSize(1000) 設置片段長度numOfFragments(1) 指定返回的片段數量preTags() 和 postTags() 設置高亮標記2)字段處理差異&#xff1a;在 ES 中&#xff0c;使用 matchQuery 而非 termQ…

DSP音頻算法工程師技能2

一、核心知識準備1. 算法原理3A算法&#xff08;AGC自動增益控制/AEC回聲消除/ANS降噪&#xff09;&#xff1a;掌握AEC的NLMS/雙講檢測原理&#xff0c;ANS的譜減法/維納濾波&#xff0c;AGC的壓縮曲線設計。熟悉Speex/WebRTC等開源實現。EQ音效&#xff1a;IIR/FIR濾波器設計…

第4章-04-用WebDriver頁面元素操作

??作者簡介,黑夜開發者,CSDN領軍人物,全棧領域優質創作者?,CSDN博客專家,阿里云社區專家博主,2023年CSDN全站百大博主。 ??數年電商行業從業經驗,歷任核心研發工程師,項目技術負責人。 ??本文已收錄于專欄:Web爬蟲入門與實戰精講,后續完整更新內容如下。 文章…

【計算機視覺與深度學習實戰】04基于K-Means聚類的圖像分割系統設計與實現

摘要 圖像分割作為計算機視覺領域的基礎任務,在目標檢測、醫學影像分析、自動駕駛等眾多應用中發揮著關鍵作用。本文基于K-Means聚類算法設計并實現了一個完整的圖像分割系統,該系統集成了多種顏色空間轉換、自定義初始化策略、空間特征融合等先進技術。通過Python和Tkinter…

Android Studio常用知識總結

一、運行方式1.運行 (Run)當您選擇“運行”時&#xff0c;Android Studio 會編譯您的應用并將其安裝到目標設備或模擬器上。這通常用于&#xff1a;快速部署: 您只想看看應用是否能正常啟動并運行&#xff0c;或者進行一些基礎的用戶界面測試。性能測試: 在正常運行模式下測試應…

設計模式筆記_行為型_訪問者模式

1. 訪問者模式介紹訪問者模式&#xff08;Visitor Pattern&#xff09;是一種行為型設計模式&#xff0c;它允許你在不改變對象結構的前提下&#xff0c;定義作用于這些對象的新操作。訪問者模式將操作的邏輯從對象結構中分離出來&#xff0c;使得你可以在運行時動態地添加新的…

數學建模 14 中心對數比變換

用途&#xff1a;是處理成分數據的核心預處理方法&#xff0c;核心目標是解決成分數據的和為常數100% &#xff0c; 導致的維度冗余&#xff0c;非線性相關問題。使得數據滿足傳統的統計/建模方法&#xff1b;舉例子&#xff1a;食品比例中 面粉(50%),糖(30%),水(20%)原理&…

【C語言強化訓練16天】--從基礎到進階的蛻變之旅:Day7

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的…

污水處理行業的 “智能革命”:邊緣計算網關如何重塑傳統運維模式?

污水處理行業的 “智能革命”&#xff1a;邊緣計算網關如何重塑傳統運維模式&#xff1f;在污水處理這一關乎生態環境與可持續發展的關鍵領域&#xff0c;藍蜂網關正憑借其先進技術與強大功能&#xff0c;發揮著無可替代的重要作用。作為工業級物聯網解決方案的核心組件&#x…

ASP.NET Core 中的多租戶 SaaS 應用程序

介紹隨著軟件即服務 (SaaS) 持續主導技術領域&#xff0c;構建能夠高效地從單一代碼庫服務于多位客戶&#xff08;租戶&#xff09;的應用程序變得至關重要。ASP.NET Core 憑借其模塊化和可擴展的架構&#xff0c;是實現多租戶 SaaS 應用程序的強大框架。本文將指導您了解構建多…

JUC之CompletableFuture【中】

文章目錄四、CompletableFuture基本使用4.1 默認線程池、無返回值4.2 默認線程池、有返回值4.3 自定義線程池、有返回值4.4 CompletableFuture 獲取結果五、對結果進行處理5.1 方法說明5.2 示例5.3 thenApply vs thenApplyAsync5.3.1 核心區別: 執行線程不同5.3.2 thenApply: 同…

環境變量不生效?

目錄 添加環境變量 解決不生效 不生效場景 解決辦法 大家都知道Windows系統對于開發者來說并不友好&#xff0c;尤其是新手&#xff0c;當然這是相比于linux和MacOS相比&#xff0c;因為開發工具、項目腳本等環境配置要為復雜&#xff0c;注意事項也更多一些。而這篇文章將…

小迪安全v2023學習筆記(六十六講)—— Java安全SQL注入SSTISPELXXE

文章目錄前記WEB攻防——第六十六天Java安全&SPEL表達式&SSTI模板注入&XXE&JDBC&MyBatis注入環境搭建Hello-Java-SecJavaSecJava安全 - SQL注入-JDBC&MyBatisJDBC注入原理語句拼接預編譯的錯誤使用JdbcTemplate正則過濾MyBatis注入原理Like注入Order B…

把 AI 變成「圖書館管理員」——基于檢索增強的離線圖書語音導航小盒子

標簽&#xff1a;檢索增強、語音導航、離線 LLM、RAG、ESP32-S3、低功耗、TTS、BLE ---- 1. 背景&#xff1a;讀者找不到書的痛苦 高校圖書館每天 5000 人次&#xff0c;高頻問題&#xff1a; ? “《深度學習》在哪個書架&#xff1f;” ? “有沒有類似《三體》的科幻&…