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

จะรับค่าปุ่มกดทั้งหมดในมือถือโดยการย้อนรอยโดยใช้ C # ได้อย่างไร


ปัญหาสามารถแบ่งออกเป็น "ปัญหาย่อย" ที่เล็กกว่าและเรียบง่าย ซึ่งสามารถแบ่งออกเป็นปัญหาย่อยที่ง่ายกว่าและเล็กกว่าได้ เราใช้แต่ละหลักทีละตัวและนับ ndigits ทั้งหมดที่สามารถเข้าถึงได้จากหลักใด ๆ ใช้แผนที่เพื่อจัดเก็บการแมปของตัวเลขที่สามารถเข้าถึงได้จากทุกหลัก เมื่อตัวเลขกลายเป็น n หลัก ให้อัปเดตการนับ

ตัวอย่าง

using System;
using System.Collections.Generic;
namespace ConsoleApplication{
   public class BackTracking{
      private string GetKeyPadValueBasedOnInput(string digit){
         Dictionary keypad = new Dictionary();
         keypad.Add("2", "abc");
         keypad.Add("3", "def");
         keypad.Add("4", "ghi");
         keypad.Add("5", "jkl");
         keypad.Add("6", "mno");
         keypad.Add("7", "pqrs");
         keypad.Add("8", "tuv");
         keypad.Add("9", "wxyz");
         return keypad.GetValueOrDefault(digit);
      }
      public void FindSequence(string currentList, string digits, List output){
         if (digits.Length == 0){
            output.Add(currentList);
            return;
         }
         else{
            string digit = digits.Substring(0, 1);
            string letters = GetKeyPadValueBasedOnInput(digit);
            for (int i = 0; i < letters.Length; i++){
               char letter = GetCHarFromString(letters, i);
               FindSequence(currentList + letter, digits.Substring(1), output);
            }
         }
      }
      private char GetCHarFromString(string letters, int value){
         char[] charArr = letters.ToCharArray();
         return charArr[value];
      }
   }
   class Program{
      static void Main(string[] args){
         BackTracking b = new BackTracking();
         List<string> output = new List<string>();
         b.FindSequence("", "34", output);
         foreach (var item in output){
            Console.WriteLine(item);
         }
      }
   }
}

ผลลัพธ์

dg
dh
di
eg
eh
ei
fg
fh
fi