سلام دوستان ، همونطوری که تو نظرات خواسته بودن که سوالات ACM ICPC سایت شریف رو حل کنیم امروز به حل یک سوال نسبتا ساده مسابقه Tehran, Asia Region - Regional 2011 میپردازیم

Mobile SMS Keys

لینک ShareCode.ir

خب قبل از ادامه حل سوال ابتدا سوال رو کامل مطالعه بفرمایید و سعی کنید خودتان حل کنید این سوال فقط نیازمند پیاده سازی است و نیاز به الگوریتم پیچیده خاصی ندارد توصیه من این است که حدافل نیم ساعت وقت برای حل این سوال بگذارید و بعد کد نمونه را چک کنید. 


لازم به ذکر هستش که کدی که من واسه خروجی دادن استفاده کردم شرط یک خطی هست که اگر شرط درست بود مقدار بعد ؟ و اگر نادرست بود و در ادامه : قرار داشت مقدار بعد : را بر می گرداند این تکنیک میتواند کدنویسی شما را سریعتر و نظم کد را در نتیجه ضریب خطا را کاهش دهد.


#include<iostream>

#include<string>

using namespace std;

string toS(char inp){

       int i,j;

       string out("");

       string db[8]={"ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"};

       for(i=0;i<8;i++){

              for(j=0;j<db[i].length();j++){

                     if(db[i][j]==inp){

                           out.resize(out.size()+j+1,'2'+i);

                           return out;

                     }

              }

       }

}

string toSMS(string inp){

       int i;

       string out("");

       for(i=0;i<inp.length();i++){

              out+=toS(inp[i]);

       }

       return out;

}

int main(){

       string str1,str2;

       long int T;

       cin>>T;

       while(T--){

              cin>>str1>>str2;

              cout<<(toSMS(str1)==toSMS(str2)?"YES\n":"NO\n");

       }

       return 0;

}