| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 388 人关注过本帖
标题:各位大虾帮帮忙。。改改,,,,
只看楼主 加入收藏
lyxcjm
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2011-4-16
结帖率:88.89%
收藏
 问题点数:0 回复次数:0 
各位大虾帮帮忙。。改改,,,,
题目原意; 以1到10随机排列,6个数为一组,编一程序。输出所有不重复且不包含有我再输入进去几个数组的数组输出就行了。    例我要找出不包含有2`9     3`7   的两组数的输出
1`2`3`4`9` 10    1`2`3`4`5 `6    1`3`4`7`8`9            那输出第2组了就可以了     
现在改为; 以1到10随机排列,6个数为一组,编一程序。输出所有不重复且和我再输入的数组中有2个或以下数字相同的数组输出就行了。(就是和我输入的数组做比较}
#include <stdio.h>
#include <stdlib.h>

int  same_state=0;            //包含状态位
void findout(int a[],int n,int m,int r,int q[],int **BB,int bb);
void main()
{
    int n,r;int *p,*q;
        int b,bb;int **B;        //存储要删除的数组
    printf("要找的不同的整数个数:");
    scanf("%d",&n);
    p=(int*)malloc(n*sizeof(int));
    printf("输入%d个不同的整数:",n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&p);
    }
    printf("输入要找元素组合的个数:");
    scanf("%d",&r);
    q=(int *)malloc(r*sizeof(int));
   
   
        printf("\n输入你将要输入的数组个数:");          //根据你的例子有两个数组,这里应该输入2
     scanf("%d",&bb);
        B=(int **)malloc(bb*sizeof(int*));

        for( i=0;i<bb;i++)
        {
                B=(int *)malloc(sizeof(int));
                B[0]=0;
                printf("请输入第%d个数组:",i+1);
          for(int j=2;1;j++)
          {
         
      
                 scanf("%d",&b);
                 if(b==0) break;                                   //每输入一个数组后请输入一个0来结束输入
                 else        
                 {
                         B=(int *)realloc(B,j*sizeof(int));
                         B[j-1]=b;
             B[0]++;
                 }

          }
        }
    findout(p,n,r,r,q,B,bb);
}

void findout(int a[],int n,int m,int r,int q[],int **BB,int bb)
{
    for(int i=n;i>=m;i--)
    {
        q[m-1]=a[i-1];
        if(m>1)
            findout(a,i-1,m-1,r,q,BB,bb);
        else
        {   

        /*---这段是比较,如果输出数组中包含了其中一项要删除的数组,same_state将变为b,否则仍然是0---*/
                        same_state=0;
                        for(int x=0;x<bb;x++)
                        {
                           for(int y=0;y<BB[x][0];y++)
                           {
                                  if(same_state!=y) break;
                              for(int z=0;z<r;z++)
                                  {
                                     if(q[z]==BB[x][y+1])
                                         {
                                           same_state++;
                                         }

                                  }
                                 
                                
                           }
                           if(same_state==BB[x][0]) break;
                           else              same_state=0;
                        }

        /*---------------------------------------------------------------------------------*/
            if(same_state==0)
                        {
            for(int j=r-1;j>=0;j--)
                printf("%d   ",q[j]);
            putchar('\n');
            
                        }
        }
        
    }

}
搜索更多相关主题的帖子: include 
2012-06-11 20:55
快速回复:各位大虾帮帮忙。。改改,,,,
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020099 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved