/* Use like * g++ -o sigmaStar sigmaStar.C * sigmaStar > o * Looking for strings with an odd number of symbols. * egrep '^(ab|aa|ba|bb)*(a|b)$' o |more * or * egrep '^(ab|aa|ba|bb)*[ab]$' o |more * or * sigmaStar | egrep '^(ab|aa|ba|bb)*(a|b)$' o |more */ #include #include #include using namespace std; int main() { string alphabet[] = {"a", "b"}; int numalpha = 2; const int MAXLENGTH = 8; string strings[static_cast(pow(numalpha,MAXLENGTH+1))]; int num=0; // length 0 string strings[num++] = ""; // null string cout << strings[num-1] << endl; // length n strings for (int is = 0; is < num; is++) { for (int ia = 0; ia < numalpha; ia++) { strings[num++] = strings[is] + alphabet[ia]; if (strings[num-1].length() > MAXLENGTH) return 0; cout << strings[num-1] << endl; } } }