У меня есть следующая функция.
int n,cnt,i,j;
int a[100];
void can(int x,int c){
if (x == 0){
for (i = 0; i < c; i++){
cout << a[i];
} cout<<endl;
}
if (x<0) c-=1;
else{
a[c] = 1;
can(x-1,c+1);
a[c] = 2;
can(x-2,c+1);
}
}
int main(){
cin >> n;
can(n,0);
}
Я хочу разрезать веревку длиной n на длину 1 или длину 2 и распечатать все возможные отрезки.Например,
Ввод: 4 будет производить Ввод: 1111 112 121 211 22 * 1010 *
Код выше работает, но когда я заменяю код вв другом разделе, использующем приведенный ниже код, почему он не выдает такой же вывод?
for (j = 1;j <= 2; j++){
a[c] = j;
can(x-j,c+1);
}