问题标题: 酷町堂:5068 最大的乘积走一走看一看

0
0
已解决
李素妍
李素妍
新手天翼
新手天翼

#include<iostream>
using namespace std;
int c[16],a,b,d;
int main(){
    bool flag=1;
    for(int i=1;i<=9;i++){
       for(int j=10;j<=99;j++){
           for(int k=100;k<=999;k++){
               c[i]++;
               c[j%10]++;
               c[j/10]++;
               c[k%10]++;
               c[k/10%10]++;
               c[k/100]++;
               for(int i=1;i<=6;i++){
                   if(c[i]==0||c[i]>1){
                      flag=0;
                      break;
                   }
               }
               if(flag==1){
                   if(a<i||b<j||d<k){
                       a=i;
                       b=j;
                       d=k;
                   }
                }
                flag=1;
           }
       }
    }
    cout<<a<<" "<<b<<" "<<d<<" "<<a*b*d;
    return 0;
}

李素妍在2020-08-04 16:22:22追加了内容


0
已采纳
赵朗
赵朗
高级光能
高级光能
  • #include<iostream>
  • #include<cstring>
  • #include<cmath>
  • using namespace std;
  • int a[10],x,y,z,maxn;
  • void Num(int x){
  • while(x){
  • a[x%10]++;
  • x/=10;
  • }
  • }
  • bool Judge(){
  • for(int i=1;i<=6;i++){
  • if(a[i]!=1)
  • return 0;
  • }
  • return 1;
  • }
  • int main(){
  • for(int i=1;i<=6;i++){
  • for(int j=12;j<=65;j++){
  • for(int k=123;k<=654;k++){
  • memset(a,0,sizeof(a));
  • Num(i);
  • Num(j);
  • Num(k);
  • if(Judge()){
  • int tmp=i*j*k;
  • if(tmp>maxn)
  • {
  • maxn=tmp;
  • x=i,y=j,z=k;
  • }
  • }
  • }
  • }
  • }
  • cout<<x<<" "<<y<<" "<<z<<" "<<maxn;
  • return 0;
  • }
  • 作死,快采纳,稳对
0
包涵宇
包涵宇
中级天翼
中级天翼

这题简单,用6重循环(枚举每一位)

要找最大值;

(循环有点多,但我只会这样。。。)

望采纳!

0
李泽远
李泽远
高级天翼
高级天翼

代码错误挺多,改得我挺难受QAQ

1.桶数组清空问题

头文件加上#include<cstring>

第三重循环内的第一句前加上memset(c,0,sizeof(c));(清空c数组,memset函数与详细了解请自行搜索)

 

李泽远在2020-08-04 16:35:23追加了内容

2.第四层循环的循环变量改成t,重名了

李泽远在2020-08-04 16:36:48追加了内容

3.

最内层if判断改成:

if(a<i||b<j||d<k){

    a=i;

    b=j;

    d=k;

}

 

李泽远在2020-08-04 16:38:52追加了内容

4.循环范围错误

i从1到6;

j从12到65;

k从123到654

 

有什么不明白的吗

我要回答