zoukankan      html  css  js  c++  java
  • 2020/3/6 旋转骰子

    旋转骰子

    题目

    玛莎有n个骰子,每个骰子的6个面上都恰好有一个0到9之间的数字。
    现在玛莎将利用这n个筛子来制作新数字。她把n个骰子摆成一排,然后从左到右查看骰子的上表面并读取,即可得到一个新数字。随后她不断的旋转每个骰子的面就可以得到不同的新数字。旋转骰子需要满足以下规则: 1、制作的数字不能包含前导零; 2、制作新数字时不需要使用所有的骰子; 3、使用骰子旋转,无法将数字9转换为数字6,反之亦然。
    给定n个骰子,玛莎可以用它们构成从1到x的所有整数。玛莎想知道,对于给定的n个骰子,这个x的最大取值是多少呢?

    输入格式

    第一行仅一个整数n,表示骰子的数量(1≤n≤3)。
    接下来n行,每行包含6个整数a[i][j](0≤a[i][j]≤9),表示第i个骰子的第j个面上的数字。

    输出格式

    输出一个整数,即最大数x,玛莎可以使用她的骰子构成数字从1到x。如果无法构成1,则输出0。

    输入样例

    3
    0 1 3 5 6 8
    1 2 4 5 7 8
    2 3 4 6 7 9

    输出样例

    98

    题目分析

    这个题目的数据比较小,骰子的个数(1<=n<=3)比较少,我们可以用枚举的方法,将三种骰子出现的数据全部计算出来,再统计每个数字出现的个数。之后对数据范围(0<=ans<=999)进行遍历,看第一次没有出现的数字是什么,再倒退一,即可算出最大值。

    代码

    过程较为繁琐,还需优化

    #include <iostream>
    #include <cstdio>
    using namespace std;
    int main()
    {
    	int n,cnt=0,flag;
    	cin>>n;
    	int s[n][6],b[1000]={0};
    	for(int i=0;i<n;i++){
    		for(int j=0;j<6;j++){
    			cin>>s[i][j];
    			b[s[i][j]]++;
    		}
    	}
    	if(n>1){
    		for(int i=0;i<n;i++){
    			for(int j=i+1;j<n;j++){
    				for(int w=0;w<6;w++){
    					for(int k=0;k<6;k++){
    						b[s[i][w]*10+s[j][k]]++;
    						b[s[j][k]*10+s[i][w]]++;
    					}
    				}
    			}
    		}
    	}
    	if(n>2){
    		for(int i=0;i<6;i++){
    			for(int j=0;j<6;j++){
    				for(int k=0;k<6;k++){
    					b[s[0][i]*100+s[1][j]*10+s[2][k]]++;
    					b[s[0][i]*100+s[2][k]*10+s[1][j]]++;
    					b[s[1][j]*100+s[2][k]*10+s[0][i]]++;
    					b[s[1][i]*100+s[0][i]*10+s[2][k]]++;
    					b[s[2][k]*100+s[0][i]*10+s[1][j]]++;
    					b[s[2][k]*100+s[1][j]*10+s[0][i]]++;
    				}
    			}
    		}
    	}
    	for(int i=1;i<1000;i++){
    		if(b[i]==0){
    			cout<<i-1<<endl;
    			break;
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    Oracle学习笔记(oracle日期处理)
    Oralce学习笔记(plsql链接客户端)
    innerText和innerHTML应用
    oracle学习笔记(行转列列转行)
    js工作笔记基础一(分隔字符串)
    Oracle学习笔记(动态函数调用)
    理解!Page.IsPostBack和NET控件中的AutoPostBack
    oracle学习笔记(包头模板)
    div拖动层自己写
    oralce学习笔记(包体模板)
  • 原文地址:https://www.cnblogs.com/CNLLB/p/12427796.html
Copyright © 2011-2022 走看看