SEQUENCE
A.First Edition
This is my first edition of assignment.
Very simple.
C.Further improvement
กก
#include <iostream>
using namespace std;
const int LENGTH = 4;
const int SEEDNUMBER = 6;
int counter=0;
int seed[SEEDNUMBER]={12, 13, 21, 23, 31, 32};
int numString[LENGTH]={0};
void seq(int current, int length, int first);
bool checkNum(int curIndex, int selected, int first);
void printStr();
int main()
{
seq(0, 1, 12);
seq(1, 1, 13);
return 0;
}
bool checkNum(int curIndex, int length, int selected, int first)
{
bool result = false;
switch (seed[curIndex])
{
case 12:
result = selected==12||selected==13||selected==23||selected==21;
break;
case 13:
result = selected==13||selected==23||selected==21||selected==31;
break;
case 23:
result = selected==23||selected==21||selected==31||selected==32;
break;
case 21:
result = selected==21||selected==31||selected==32;
break;
case 31:
result = selected==31||selected==32;
break;
case 32:
result = selected==32;
break;
}
if (length<LENGTH)
{
return result;
}
else
{
switch (first)
{
case 12:
result = result &&(selected==21||selected==31||selected==32);
break;
case 13:
result = result &&(selected==31||selected==32);
break;
}
return result;
}
}
void seq(int curIndex, int length, int first)
{
numString[length-1] = seed[curIndex];
if (length<LENGTH)
{
for (int i=0; i<SEEDNUMBER; i++)
{
if (checkNum(curIndex, length+1, seed[i], first))
{
seq(i, length+1, first);
}
}
}
else
{
printStr();
}
}
void printStr()
{
counter++;
cout<<"Number "<<counter<<" string is:\t ";
for (int i=0; i< LENGTH; i++)
{
cout<<numString[i]<<'\t';
}
cout<<"\n";
}
The result is like following:
Number 1 string is: 12 12 12 21 Number 2 string is: 12 12 13 21 Number 3 string is: 12 12 13 31 Number 4 string is: 12 12 21 21 Number 5 string is: 12 12 21 31 Number 6 string is: 12 12 21 32 Number 7 string is: 12 12 23 21 Number 8 string is: 12 12 23 31 Number 9 string is: 12 12 23 32 Number 10 string is: 12 13 13 21 Number 11 string is: 12 13 13 31 Number 12 string is: 12 13 21 21 Number 13 string is: 12 13 21 31 Number 14 string is: 12 13 21 32 Number 15 string is: 12 13 23 21 Number 16 string is: 12 13 23 31 Number 17 string is: 12 13 23 32 Number 18 string is: 12 13 31 31 Number 19 string is: 12 13 31 32 Number 20 string is: 12 21 21 21 Number 21 string is: 12 21 21 31 Number 22 string is: 12 21 21 32 Number 23 string is: 12 21 31 31 Number 24 string is: 12 21 31 32 Number 25 string is: 12 21 32 32 Number 26 string is: 12 23 21 21 Number 27 string is: 12 23 21 31 Number 28 string is: 12 23 21 32 Number 29 string is: 12 23 23 21 Number 30 string is: 12 23 23 31 Number 31 string is: 12 23 23 32 Number 32 string is: 12 23 31 31 Number 33 string is: 12 23 31 32 Number 34 string is: 12 23 32 32 Number 35 string is: 13 13 13 31 Number 36 string is: 13 13 21 31 Number 37 string is: 13 13 21 32 Number 38 string is: 13 13 23 31 Number 39 string is: 13 13 23 32 Number 40 string is: 13 13 31 31 Number 41 string is: 13 13 31 32 Number 42 string is: 13 21 21 31 Number 43 string is: 13 21 21 32 Number 44 string is: 13 21 31 31 Number 45 string is: 13 21 31 32 Number 46 string is: 13 21 32 32 Number 47 string is: 13 23 21 31 Number 48 string is: 13 23 21 32 Number 49 string is: 13 23 23 31 Number 50 string is: 13 23 23 32 Number 51 string is: 13 23 31 31 Number 52 string is: 13 23 31 32 Number 53 string is: 13 23 32 32 Number 54 string is: 13 31 31 31 Number 55 string is: 13 31 31 32 Number 56 string is: 13 31 32 32 Press any key to continue