Зарчим. Нийт дэд олонлогийн тоо 2^n-1 учраас 1-2^n-1 хүртэлх тоог хоёртын тооллын систем рүү n урттайгаар (хоёртын тооллын систем дэх бичлэгийн урт нь n болтол эхэнд '0' залгах) хөрвүүлээд, уг дарааллын элементүүдийн 1-тэй тэнцүү байх элементийн индексэнд харгалзах өгөгдсөн мөрийн тэмдэгтийг хэвлэх
#include <iostream> #include <string> #include <sstream> #include <math.h> using namespace std; string NumberToString(int pNum) { ostringstream converter; converter << pNum; return converter.str(); } string ToBinar(long pDecNum, int pLen) { string retStr = "", tmpStr; int d, l; while(pDecNum > 0) { d = pDecNum % 2; retStr = NumberToString(d).append(retStr); pDecNum /= 2; }
l = retStr.length(); for(int i=0; i<pLen - l; i++) { tmpStr = "0"; retStr = tmpStr.append(retStr); } return retStr; } int main() { string strInput, strBin; int l, lBin; long count = 0; cout<<"Input your string: "; cin>>strInput; l = strInput.length(); count = pow(2, l); for(int i=1; i<count; i++) { if(i>1) cout<<", "; strBin = ToBinar(i, l); lBin = strBin.length(); for(int j=0; j<lBin; j++) { if(strBin[j] == '1') { cout<<strInput[j]; } } } cout<<"\n\n"; return 0; }
Жишээ:
Сайн байна уу тантай холбоо барих гэсэн ямар хаягаар холбогдох вэ майл хаяг юм уу утас нь байна уу
ReplyDeletekhairosh_coder@yahoo.com
Delete