首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求一段代码,该怎么处理

2012-11-06 
求一段代码从n个数中选取m个数来排列,并且打印出符合条件的结果(每组中1,2,3中最少有1个, 但1,2,3都有的除

求一段代码
从n个数中选取m个数来排列,并且打印出符合条件的结果(每组中1,2,3中最少有1个, 但1,2,3都有的除外)

[解决办法]
不重复版

C/C++ code
#include<stdio.h>  #include <string.h>char s[20],t[20];char b[20];int n,m;int check(){    char used[128];    memset(used,0,sizeof(used));    for(int i=0;i<m;i++)        used[t[i]]=1;    if(!used['1']&&!used['2']&&!used['3'])        return 0;    if(used['1']&&used['2']&&used['3'])        return 0;    return 1;}void get(int k){    if(k==m)    {        if(check())        {            t[k]=0;            printf("%s\n",t);        }        return;    }    for(int i=0;i<n;i++)    {        if(!b[i])        {            b[i]=1;            t[k]=s[i];            get(k+1);            b[i]=0;        }    }}int main(){    while(scanf("%s %d",s,&m))    {        n=strlen(s);        get(0);        printf("\n");    }} 

热点排行