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

หาตัวที่ N ในอนุกรมใช้หลัก 4 และ 7 เท่านั้นด้วย C++


ภาพรวมปัญหา

อนุกรมใช้หลัก 4 และ 7 เท่านั้น: 4, 7, 44, 47, 74, 77, 444, 447, 474, 477, 744, ...

หาตัวที่ N

ตัวอย่าง

อินพุต

N = 4

เอาต์พุต

47

วิธีแก้ปัญหา

สร้างอาร์เรย์ series[1...N]:

  • series[1] = 4
  • series[2] = 7
  • i คี่: series[i] = series[i/2] × 10 + 4
  • i คู่: series[i] = series[i/2 - 1] × 10 + 7

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

#include <iostream>
#include <vector>
using namespace std;

int findNthSeriesElement(int N) {
    vector<int> series(N + 1);
    series[1] = 4;
    series[2] = 7;
    for (int i = 3; i <= N; i++) {
        if (i % 2 != 0)
            series[i] = series[i / 2] * 10 + 4;
        else
            series[i] = series[(i / 2) - 1] * 10 + 7;
    }
    return series[N];
}

int main() {
    int N = 9;
    cout << "The " << N << "th element of the array is " << findNthSeriesElement(N);
    return 0;
}

เอาต์พุต

The 9th element of the array is 474

สรุป

ใช้ Dynamic Programming สร้างค่าจากค่าก่อนหน้า คล้าย Binary Tree แต่มัป 0→4, 1→7