• ZOJ 1089 Lotto


    原题链接

    题目大意:有一种抽奖游戏乐透(Lotto),规则是从1到49这49个自然数中随机抽取6个数。现在有一种简化版的游戏,先在49个数里面选出k(6<k<13)个数,然后再从这k个数里面选出6个数。问一共有多少种数字排列的可能,把所有的可能按照升序输出。< p="">

    解法:输入的数字已经按照升序排列好了。数字范围不大,最多也就是13选6,所以可以暴力破解法。六层for循环解决问题。如果数据量再大的话,就要用深度优先搜索了。

    参考代码:

    #include<iostream>
    
    using namespace std;
    
    int main(){
    	int k,i,s[13]={0};
    	int a,b,c,d,e,f;
    	bool first=true;
    	while(cin>>k&&k!=0){
    		if(!first){
    			cout<<endl;
    		}else{
    			first=false;
    		}
    		for(i=0;i<k;i++)
    			cin>>s[i];
    		for(a=0;a<k-5;a++){
    			for(b=a+1;b<k-4;b++){
    				for(c=b+1;c<k-3;c++){
    					for(d=c+1;d<k-2;d++){
    						for(e=d+1;e<k-1;e++){
    							for(f=e+1;f<k;f++){
    								cout<<s[a]<<' '<<s[b]<<' '<<s[c]<<' '<<s[d]<<' '<<s[e]<<' '<<s[f]<<endl;
    							}
    						}
    					}
    				}
    			}
    		}
    		
    	}
    
    
    
    	return 0;
    }
  • 相关阅读:
    面试题练习
    小作业7
    小作业6,7
    小作业
    坦克大战
    面试题
    20181213作业
    20181212作业
    20181211作业
    第三周周末作业
  • 原文地址:https://www.cnblogs.com/naive/p/3568769.html
Copyright © 2020-2023  润新知