Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ นับตัวอักษรที่เหลือหลังพิมพ์ n ตัวอักษรในโปรแกรมขี้เกียจ


คำอธิบายปัญหา

สมมติว่าเรามีอาร์เรย์ A n องค์ประกอบ และค่า c มีโปรแกรมเขียนข้อความขี้เกียจ ถ้าไม่พิมพ์ต่อเนื่อง c วินาที ตัวอักษรที่เขียนไว้จะหายหมด A[i] คือเวลาที่พิมพ์ตัวอักษรตัวที่ i ต้องการหาจำนวนตัวอักษรที่เหลือบนหน้าจอหลังพิมพ์ครบ n ตัว

ตัวอย่าง: A = [1, 3, 8, 14, 19, 20]; c = 5 ผลลัพธ์คือ 3 เพราะ:

  • วินาที 8 มี 3 ตัวอักษรบนหน้าจอ
  • หายหมดที่วินาที 13
  • วินาที 14 และ 19 พิมพ์เพิ่ม 2 ตัว
  • วินาที 20 พิมพ์อีก 1 ตัว รวมเหลือ 3 ตัว

ขั้นตอนการแก้ปัญหา

s := 1
n := ขนาดของ A
สำหรับ i := 1 ถึง n-1:
    ถ้า (A[i] - A[i-1]) <= c: เพิ่ม s ขึ้น 1
    มิฉะนั้น: s := 1
คืนค่า s

ตัวอย่างโค้ด C++

#include <bits/stdc++.h>
using namespace std;

int solve(vector<int> A, int c) {
    int s = 1;
    int n = A.size();
    for (int i = 1; i < n; i++) {
        if ((A[i] - A[i - 1]) <= c) {
            s++;
        } else {
            s = 1;
        }
    }
    return s;
}

int main() {
    vector<int> A = { 1, 3, 8, 14, 19, 20 };
    int c = 5;
    cout << solve(A, c) << endl;
}

อินพุต

{ 1, 3, 8, 14, 19, 20 }, 5

เอาต์พุต

3