C语言如何实现满足多条件匹配简单过滤问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何实现满足多条件匹配简单过滤问题相关的知识,希望对你有一定的参考价值。

用C语言同时满足下列2个条件就输出源代码
(1)假定从1-11这11个数字中任选6个全组合输出(每行输出6个不相同数字,并且从小到大排列)
(2)将第一问得到数据过滤,并且同时满足下面3条条件就输出,输出结果用"116.txt"保存在C盘
01,02,03含有1至2个
02,06,08,09含有1至3个
01,06,07,08,09,10,11含有0至2个

正确输出结果如下

02,03,04,05,10,11
02,03,04,05,09,11
02,03,04,05,09,10
02,03,04,05,08,11
02,03,04,05,08,10
02,03,04,05,08,09
02,03,04,05,07,11
02,03,04,05,07,10
02,03,04,05,07,09
02,03,04,05,07,08
02,03,04,05,06,11
02,03,04,05,06,10
02,03,04,05,06,09
02,03,04,05,06,08
02,03,04,05,06,07

最好解析一下

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX   11
#define MIN   1
#define NUM   6
int data[NUM];
int check(void)

    int i;
    int j;
    int ret;
    
    ret = 0;
    for (i=j=0;i<NUM; i++)
    
        if (data[i]==1 || data[i]==2 || data[i]==3 )
        
           j++;
        
    
    if (!(j==1||j==2))
    
        return ret;
    
    for (i=j=0;i<NUM; i++)
    
        if (data[i]==2 || data[i]==6 || data[i]==8 || data[i] == 9 )
        
           j++;
        
    
    if (!(j>=1&&j<=3))
    
        return ret;
    
    for (i=j=0;i<NUM; i++)
    
        if (data[i]==1 || (data[i]>=6 && data[i]<=11))
        
           j++;
        
    
    if (!(j>=0&&j<=2))
    
        return ret;
    
    
    ret = 1;
    
    return ret;

void display(void)

    int i;
    
    for (i=0; i<NUM; i++)
    
        printf("%d ", data[i]);
    
    printf("\\n");

int fuckagain(int lol)

   if (data[lol] == lol+MAX-NUM+1)
   
       return fuckagain(lol-1);
   
   else
   
       data[lol]++;
       return lol;
   

void fuck(void)

    int i;
    
    i = fuckagain(NUM-1);
    
    if (i == NUM-1)
    
        return;
    
    if (data[i]<MAX-NUM+1+i)
    
        for (;i<NUM-1;i++)
            data[i+1]=data[i]+1;
    
    

int main(void)

    int i,j;
    
    j = 0;
    for (i=0;i<NUM;i++)
    
        data[i]=i+MIN;
    
    
    if (check())
    
        display();
        j++;
    
    for (i = 1;data[0]<MAX-NUM+1;i++)
    
        fuck();
        if (check())
        
            display();
            j++;
        
    
    printf("tatal = %d,  match condition = %d\\n", i, j);

追问

真高手

参考技术A 分四个函数来完成

第一个函数 只负责生成 11选6的功能。

第二个函数 则循环判断刚刚生成的数字是否满足规则 返回true。false

第三个第四个 同理 所以你只需要查询一下。怎么实现11选6的数字以及怎么判断该字符串是否包含某个字符

最后以追加方式 将每个满足条件的追加到文本框中追问

不会菜鸟一个请高手写出源代码

以上是关于C语言如何实现满足多条件匹配简单过滤问题的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用fs包的path_filter函数按照规则或者正则匹配公式过滤满足条件的路径(Filter paths)

C:基于GNU regex(regex.h)regexec实现正则表达式多次匹配

Excel中,如何多条件判断,输出结果

jsp中多条件判断?

C语言调整数组顺序使奇数位于偶数前面

excel怎么一对多匹配