作业帮 > 综合 > 作业

其中第二题是在第一题基础上的,第三题是在第二题基础上的

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 13:00:59
其中第二题是在第一题基础上的,第三题是在第二题基础上的
1)1 2 3 4 5 6 7 8 9 10 中选两个号
8 9 10 11 12 13 14 15 16 17 18 19 20 中选一个号
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45中选3个号
让他们自由组合成6个号
同时排列需要从小到大排列.
结果
2)在组合中要求有4 8 12 14 16 18 20 25 30 中的任意两个
在组合中要求有1 2 3 5 9 13 15 17 30 38 44 45 中有任意的一个号
剩下的中含有三个号
同时排列需要从小到大排列.
结果
3)组合中 4 5 6 7 10 11 12 13 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 至少含有四个号
组合中 4 5 6 7 10 11 12 13 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 含有任意的五个号
同时排列需要从小到大排列.
结果
花了一下午时间把程序写出来了.一次性满足1,2,3个条件程序代码在vc6.0下编译.在cmd里运行程序,重定向输出到一个文件可以得到如下数据:1 4 10 23 24 25 1 4 10 23 24 30 1 4 10 23 25 26 1 4 10 23 25 27 ...等等.数据量非常大啊,不知道是不是弄错了,但是对照你的条件好像都满足.程序代码如下,时间紧凑,没怎么好好想算法,用了比较笨的方法.// lottery.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>int num[1400000][6];//ΪÁËÊ¡Ê£¬Ö±½Ó¶¨ÒåÒ»¸ö¾Þ´óÊý×élong len;void chooseNum(){len=0;for(int ia=1;ia<=10;ia++){  for(int ja=ia+1;ja<=10;ja++)  {   for(int ib=8;ib<=20;ib++)   {    for(int ic=21;ic<=45;ic++)    {     for(int jc=ic+1;jc<=45;jc++)     {      for(int kc=jc+1;kc<=45;kc++)      { num[len][0]=ia; num[len][1]=ja; num[len][2]=ib; num[len][3]=ic; num[len][4]=jc; num[len][5]=kc;        int label1=0;        int label2=0; int label3=0; int label4=0; for(int i=0;i<6;i++)        {  switch (num[len][i])  {        case 4:          label1++;         break;        case 8:          label1++;         break;        case 12:          label1++;         break;        case 14:          label1++;         break;        case 16:          label1++;         break;        case 18:          label1++;         break;        case 20:          label1++;         break;        case 25:          label1++;         break;        case 30:          label1++;         break;        } //end switch       } //check for num       for(int j=0;j<6;j++)       {        switch (num[len][j])        {        case 1:          label2++;         break;        case 2:          label2++;         break;        case 3:          label2++;         break;        case 5:          label2++;         break;        case 9:          label2++;         break;        case 13:          label2++;         break;        case 15:          label2++;         break;        case 17:          label2++;         break;        case 30:          label2++;         break;        case 38:          label2++;         break;        case 44:          label2++;         break;        case 45:          label2++;         break;        } //end switch       } //check for num       for(int k=0;k<6;k++)       {        switch (num[len][k])        {        case 4:          label3++;         break;        case 5:          label3++;         break;        case 6:          label3++;         break;        case 7:          label3++;         break;        case 10:          label3++;         break;        case 11:          label3++;         break;        case 12:          label3++;         break;        case 13:          label3++;         break;        case 23:          label3++;         break;        case 24:          label3++;         break;        case 25:          label3++;         break;        case 26:          label3++;         break;        case 27:          label3++;         break;        case 28:          label3++;         break;        case 29:          label3++;         break;        case 30:          label3++;         break;        case 31:          label3++;         break;        case 32:          label3++;         break;        case 33:          label3++;         break;        case 34:          label3++;         break;        case 35:          label3++;         break;        case 36:          label3++;         break;        case 37:          label3++;         break;        case 38:          label3++;         break;        case 39:          label3++;         break;        case 40:          label3++;         break;        } //end switch       } //check for num       for(int m=0;m<6;m++)       {        switch (num[len][m])        {        case 4:          label4++;         break;        case 5:          label4++;         break;        case 6:          label4++;         break;        case 7:          label4++;         break;        case 10:          label4++;         break;        case 11:          label4++;         break;        case 12:          label4++;         break;        case 13:          label4++;         break;        case 23:          label4++;         break;        case 24:          label4++;         break;        case 25:          label4++;         break;        case 26:          label4++;         break;        case 27:          label4++;         break;        case 28:          label4++;         break;        case 29:          label4++;         break;        case 30:          label4++;         break;        case 31:          label4++;         break;        case 32:          label4++;         break;        case 33:          label4++;         break;        case 34:          label4++;         break;        case 35:          label4++;         break;        case 36:          label4++;         break;        case 37:          label4++;         break;        case 38:          label4++;         break;        case 39:          label4++;         break;        case 40:          label4++;         break;        } //end switch       } //check for num              if(2<=label1&&1<=label2&&4<=label3&&5<=label4)       {        len++;       }       else       {        continue;       }      }     }    }   }  } }} void printNum(){ for(int i=0;i<len;i++) {  for(int j=0;j<6;j++)  {   printf("%d ",num[i][j]);  }  printf("\n"); }}int main(int argc,char *argv[]){ chooseNum(); printNum(); std::cin.get(); return 0;}