旋转骰子
玛莎有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。
#include <stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
int* pa=(int*)a;
int* pb=(int*)b;
int num1=*pa;
int num2=*pb;
return num1-num2;
}
int main (){
int b[10]={0,1,2,3,4,5,6,7,8,9};
int cnt[10]={0,0,0,0,0,0,0,0,0,0,};
int n,i,j,k,h,m=0;
scanf("%d",&n);
int a[n][6];
int output=0;
int c[234];
for(i=0;i<234;i++){
c[i]=0;
}
for(i=0;i<n;i++){
for(j=0;j<6;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++){
for(j=0;j<6;j++){
if(a[i][j]==b[0]) cnt[0]++;
if(a[i][j]==b[1]) cnt[1]++;
if(a[i][j]==b[2]) cnt[2]++;
if(a[i][j]==b[3]) cnt[3]++;
if(a[i][j]==b[4]) cnt[4]++;
if(a[i][j]==b[5]) cnt[5]++;
if(a[i][j]==b[6]) cnt[6]++;
if(a[i][j]==b[7]) cnt[7]++;
if(a[i][j]==b[8]) cnt[8]++;
if(a[i][j]==b[9]) cnt[9]++;
}
}
if(n>1){
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
for(k=0;k<6;k++){
for( m=0;m<6;m++){
c[h]=a[i][m]*10+a[j][k];
c[h+1]=a[j][k]*10+a[i][m];
h=h+2;
}
}
}
}
}
for(i=0;i<n;i++){
for(k=0;k<6;k++){
c[h]=a[i][k];
h++;
}
}
qsort(c,234,sizeof(int),cmp);
for(i=0;i<234;i++){
if(c[i+1]-c[i]>1){
break;
}
}
printf("%d",c[i]);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】