划分无冲突子集问题
来源:互联网 发布:淘宝聚星台在哪里 编辑:程序博客网 时间:2024/05/29 16:47
这个算法用的贪心的思想,容易想到和理解,但时间复杂度为O(n²),应该可以优化.
算法思想:创建一个循环队列,将n个元素加入队列中,然后当队列不为空时有:将队列里的元素依次出队列赋值给elem,然后elem与此时a[x]组中的元素依次比较,若冲突则将该元素入队列,否则将该元素加入该组中.直到循环结束.
int divgroup(int n,int r[][10],int a[][10]){ SqQueue squ; int x = 0,y = 0; //x表示数组a的组别,y表示数组a的x组中元素的个数 QElemType elem; InitQueue(squ,n); //创建循环队列 for(int i = 1;i <= n;i++)//将元素入队列 EnQueue(squ,i); int flag = n; while(!QueueEmpty(squ)){//当队列不为空 int i,j; for(i = 1;i <= flag;i++){ //flag表示此时队列里边的元素个数 DeQueue(squ,elem); // 出队列 for(j = 0;j < y;j++){ //将elem与同组的其他元素 判断是否冲突 if(r[elem-1][a[x][j]-1]){ //如果冲突 将elem重新入队列 EnQueue(squ,elem); break; } } if(j == y){// 当j == y 时,elem与同组的其他元素不冲突 a[x][y] = elem; // 将elem 存入数组中 n--; //队列内元素个数减 1 y++; } } //执行一次循环队列 将组别数x+1, 将此时队列所剩的元素赋给flag x++; flag = n; y = 0; } return x;}
阅读全文
0 0
- 划分无冲突子集问题
- 划分无冲突子集问题
- 划分无冲突子集问题
- 划分无冲突子集
- DP——划分子集和问题
- 【NPC】14、子集和问题规约到划分问题
- 数据结构_队列应用举例_划分子集问题
- 数据结构_队列应用举例_划分子集问题
- 子集问题
- 划分两个子集使其合相等
- 划分和相等的子集-LintCode
- 求子集问题
- 求集合子集问题
- 求子集问题
- 子集树变式问题
- 子集和问题
- 集合子集问题:
- 子集和问题
- SQL connect by递归查询
- MYSQL模糊查询
- Codevs 1069 关押罪犯
- 【通用】正则表达式小记
- ThinkPHP-TPT360 文章分页不随搜索结果变化的问题
- 划分无冲突子集问题
- github 开源android项目
- opencv-性能测量与改进技术
- 用php二分法查找一个值在数组中的位置
- UBOOT下I2C调试命令使用
- XGBoost
- 对海康28181摄像头PS流解码的支持(二)
- 51nod 1134最长递增子序列
- Java通过mongo-java-driver-3.0+查询mongodb数据库