ในปัญหานี้ เราได้รับตัวเลข N ภารกิจของเราคือ หาความชันของตัวเลขที่กำหนด
ความชันของตัวเลข คือจำนวนรวมของหลักสูงสุดและหลักต่ำสุดในตัวเลข
หลักสูงสุด (Maxima digit) คือหลักที่เพื่อนบนทั้งสองข้าง (ก่อนหน้าและถัดไป) มีค่าน้อยกว่า
หลักต่ำสุด (Minima digit) คือหลักที่เพื่อนบนทั้งสองข้าง (ก่อนหน้าและถัดไป) มีค่ามากกว่า
มาดูตัวอย่างเพื่อเข้าใจปัญหา
อินพุต
N = 9594459
เอาต์พุต
2
วิธีการแก้ปัญหา
วิธีแก้ปัญหาแบบง่ายคือการเดินทางผ่านตัวเลขทีละหลัก โดยไม่นับหลักแรกและหลักสุดท้าย (เพราะไม่นับเป็น maxima หรือ minima) ตอนนี้ สำหรับแต่ละหลัก เราจะตรวจสอบว่าหลักนั้นมากกว่าหรือน้อยกว่าหลักก่อนหน้าและหลักถัดไป ในที่สุด เราจะคืนค่าจำนวน maxima และ minima
ตัวอย่าง
โปรแกรมสาธิตการทำงานของวิธีแก้ปัญหาของเรา
#include <iostream> using namespace std; int findNumberSlope(string N, int len){ int slope = 0; for (int i = 1; i < len - 1; i++) { if (N[i] > N[i - 1] && N[i] > N[i + 1]) slope++; else if (N[i] < N[i - 1] && N[i] < N[i + 1]) slope++; } return slope; } int main(){ string N = "574473434329"; int len = N.size(); cout<<" The slope of the given number is "<<findNumberSlope(N, len); return 0; }
เอาต์พุต
The slope of the given number is 7