Я использую рекурсивную функцию для поиска подмножеств из массива символов на основе заданной суммы:
str="1234567890"
n=2
(размер подмножества), m=9
(заданная сумма). Решение: {9,0},{0,9},{8,1},{1,8},{7,2},{2,7},,,,,{5,4},{4,5}
. Мой код следующий.
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
void genrate(char*,int,int,int);
int main(){
char str[20]="1234567890";
genrate(str,2,9,10);
}
void genrate(char *str,int n,int m,int k){
int i,j,sum;
sum=0;
if(sum==m){
for(i=0; i<n; i++){
printf("%c ",str[i]);
}
printf("\n");
}
sum+=(int)str[k]-48;
genrate(str,n,m,k);
genrate(str,n,m,k-1);
}