【C++】for循环嵌套例题专题

for循环嵌套例题专题


一、语法

当"重复里面还有重复"时,就要用循环嵌套。

基本结构:

cpp 复制代码
for (int i = 0; i < 行数; i++) {
    for (int j = 0; j < 列数; j++) {
        // 每个位置要做的事
    }
    cout << endl; // 一行结束后换行
}

理解方式:

  • 外层 i:控制行数,第几行;
  • 内层 j:控制列数,输出当前这一行里面都有些什么。

二、例题详解

例题1:数字直角三角形

题目描述

给出 n,输出一个直角边长度为 n 的数字直角三角形。

所有数字都要按 2 位输出,不足 2 位前导补 0

输入格式

一个正整数 n

输出格式

按题意输出图形。

输入输出样例

输入:

text 复制代码
5

输出:

text 复制代码
0102030405
06070809
101112
1314
15

思路讲解

  1. 首先我们分析一共有多少行,外层循环控制行数,共 n 行,所以我们需要一个变量来控制行数,这里我们使用变量 i
  2. 然后我们分析每一行要输出多少个数字,第 i 行要输出 n-i 个数字,所以内层循环写成 j < n - i
  3. 最后我们使用变量 idx 来维护当前数字,保证每输出一次就加 1。

参考代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int n;
int main() {
  cin >> n;
  int idx = 1;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n - i; j++) {
      if (idx < 10) {
        cout << '0' << idx;
      } else {
        cout << idx;
      }
      idx++;
    }
    cout << endl;
  }
  return 0;
}

例题2:最长连号

题目描述

给定长度为 n 的整数序列,求其中最长的"连续递增 1"子段长度。

例如连续段满足后一个数等于前一个数加 1

输入格式

第一行输入一个整数 n

第二行输入 n 个整数,表示序列。

输出格式

输出一个整数,表示最长连号的长度。

输入输出样例

输入:

text 复制代码
10
1 5 6 2 3 4 5 6 8 9

输出:

text 复制代码
5

思路讲解

  1. cur 记录"当前连续段长度",ans 记录"历史最大长度";
  2. 每次读入新数字 x,判断是否满足 x == 上一个数 + 1
  3. 满足则 cur++,否则重置 cur=1
  4. 每轮都更新一次 ans

参考代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
  int n;
  cin >> n;

  int ans = 1;
  int cur = 1;
  int x, x2;

  cin >> x2;
  for (int i = 1; i < n; i++) {
    cin >> x;
    if (x == x2 + 1) {
      cur++;
      if (cur > ans) {
        ans = cur;
      }
    } else {
      cur = 1;
    }
    x2 = x;
  }

  cout << ans << endl;

  return 0;
}
相关推荐
数据狐(Datafox)12 小时前
mercadolibre.item_get 工程实战:美客多商品详情API技术解析与落地应用
java·人工智能·mysql·json
玖玥拾12 小时前
LeetCode 290 单词规律
算法·leetcode·哈希算法·散列表
~木雨12 小时前
Java 内部类系列④(收官):内部类底层与版本演进全梳理 —— 合成字段、nestmates 与 JDK18 优化,附全套面试背诵表
java·字节码·内部类·java 面试·nestmates·jdk18
吴声子夜歌12 小时前
Guava——反射
java·开发语言·guava
liliangcsdn12 小时前
多空价差收益序列汇总统计的分析和代码示例
人工智能·算法·机器学习
啥都想学点的研究生12 小时前
一篇文章讲清楚:Adaboost算法与GBDT
人工智能·算法
励志不掉头发的内向程序员12 小时前
LibreCAD 2D架构】从鼠标点击到屏幕像素:LibreCAD绘图架构全链路解析之鼠标事件与RS_ActionDrawLine
c++·qt·学习·架构·计算机外设
旖旎夜光12 小时前
LeetCode 525:连续数组(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
fpcc12 小时前
c++编程实践—如何理解生命周期
c++
X1A0RAN12 小时前
Jenkins 流水线跨阶段的数据共享:让变量“动态更新“成为可能
java·servlet·jenkins