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

จำนวนบรรทัดที่จำเป็นในการเขียนสตริงที่กำหนดใน C++


เราได้รับสตริงของตัวอักษรและความกว้างอาร์เรย์[]ที่มีความกว้างของตัวอักษรภาษาอังกฤษทั้งหมด เป้าหมายคือการค้นหาจำนวนบรรทัดที่จำเป็นในการพิมพ์สตริงนี้บนหน้าเว็บที่มีความกว้าง 10 อักขระ พิมพ์อักขระที่เหลือด้วย

เราจะสำรวจสตริงตรวจสอบความกว้างของอักขระปัจจุบัน และเพิ่ม ถ้าผลรวมนี้>=10 เพิ่มจำนวนบรรทัด

มาทำความเข้าใจกับตัวอย่างกัน

ป้อนข้อมูล

Str = "ababababab"
widths[] = {2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1};

ผลผลิต

Count of lines: 2 Remaining width: 6

คำอธิบาย

line 1 : ababab ( 2+1+2+1+2+1 = 3+3+3=9)
line 2 : abab (2+1+2+1)

ป้อนข้อมูล

Str = "bbbbbbbbbbdd"
widths[] = {2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1};

ผลผลิต

Count of lines: 2 Remaining width: 2

คำอธิบาย

line 1 : bbbbbbbbbb (1+1+1+1+1+1+1+1+1+1=10)
line 2 : dd (1+1)

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • เรามีสตริง Str และความกว้างอาร์เรย์[] ของช่องว่างของแต่ละตัวอักษร

  • ฟังก์ชัน numberOfLines(string str,int len, int w[]) แสดงจำนวนบรรทัดในหน้าและความกว้างของอักขระในบรรทัดสุดท้าย

  • นับบรรทัดเริ่มต้นเป็น numoflines=0

  • ใช้ความกว้างบรรทัดสุดท้ายเริ่มต้นเป็นเหลือ=0

  • Traverse string str ใช้ for loop.

  • ใช้อักขระปัจจุบัน c เป็น str[i].

  • ตรวจสอบความกว้างของ c เป็น num=width[c-’a’].

  • เพิ่มจำนวนนี้เพื่อคงอยู่

  • หากยังคงอยู่>=10 เพิ่มจำนวนบรรทัดและการอัพเดทยังคงเป็น num.

  • พิมพ์ผลลัพธ์ที่ส่วนท้ายของลูป

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
// Function to return the number of lines required
void numberOfLines(string str,int len, int w[]){
   int numoflines = 0;
   int remain = 0;
   //traversing string
   for (int i=0;i<len;i++){
      char c=str[i]; //current character
      int num = w[c - 'a']; //units for current character remain += num;
      if (remain >= 10){
         numoflines+=1;
         remain = num;
      }
   }
   cout<<"Count of lines: "<<numoflines;
   cout<<endl<<"Remaining width: "<<remain;
}
int main(){
   string Str = "abcdefghijklmnop";
   int length=Str.length();
   int widths[] = {2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1};
   numberOfLines(Str,length,widths);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of lines: 3
Remaining width: 1