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 <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)