日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java蓝桥杯凑算是,第七届蓝桥杯JAVA B组真题解析-凑算式(第三题)

發布時間:2025/3/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java蓝桥杯凑算是,第七届蓝桥杯JAVA B组真题解析-凑算式(第三题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第七屆藍橋杯JAVA B組真題解析-湊算式(第三題)

湊算式

A+B/C+DEF/GHI =10

(如果顯示有問題,可以參見【圖1.jpg】)

這個算式中AI代表19的數字,不同的字母代表不同的數字。

比如:

6+8/3+952/714 就是一種解法,

5+3/1+972/486 是另一種解法。

這個算式一共有多少種解法?

注意:你提交應該是個整數,不要填寫任何多余的內容或說明性文字。

湊算式

思考思路:

數字不能重復

做除法要使用double類型

第一種方法 窮舉法(寫了很多for)

代碼很丑 但是思路簡單 清晰 其實可以用遞歸寫的,但是沒有想出來,還請高手指教

public class Demo3

{

public static void main(String[] args)

{

int [] number = {1,2,3,4,5,6,7,8,9};

double a,b,c,d,e,f,g,h,i;

long times = 0L;

int sucess = 0;

a = b = c = d = e = f = g = h = i =0.0d;

for (int j1 = 0; j1 < number.length; j1++)

{

a = number[j1];

for(int j2=0;j2 < number.length; j2++)

{

b = number[j2];

if(a!=b)

{

for(int j3=0;j3 < number.length; j3++)

{

c = number[j3];

if(c!=a&&c!=b)

{

for(int j4=0;j4 < number.length; j4++)

{

d = number[j4];

if(d!=a&&d!=b&&d!=c)

{

for(int j5=0;j5 < number.length; j5++)

{

e = number[j5];

if(e!=a&&e!=b&&e!=c&&e!=d)

{

for(int j6=0;j6 < number.length; j6++)

{

f = number[j6];

if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e)

{

for(int j7=0;j7 < number.length; j7++)

{

g = number[j7];

if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f)

{

for(int j8=0;j8 < number.length; j8++)

{

h = number[j8];

if(h!=a&&h!=b&&h!=c&&h!=d&&h!=e&&h!=f&&h!=g)

{

for(int j9=0;j9 < number.length; j9++)

{

i = number[j9];

if(i!=a&&i!=b&&i!=c&&i!=d&&i!=e&&i!=f&&i!=g&&i!=h)

{

times++;

if(a+b/c+((d*100+e*10+f)/(g*100+h*10+i))==10.0d)

{

sucess++;

System.out.println("a="+a);

System.out.println("b="+b);

System.out.println("c="+c);

System.out.println("d="+d);

System.out.println("e="+e);

System.out.println("f="+f);

System.out.println("g="+g);

System.out.println("h="+h);

System.out.println("i="+i);

System.out.println("----------------------------");

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

System.out.println("共運行"+times+"次"+","+"共有"+sucess+"解");

}

第二種是別人博客上的代碼 我找過來的 用的是遞歸 看了好久也沒懂 有看懂的朋友麻煩講解一下謝謝啦

畢竟算法渣渣 等我有空就去注明出處

———————————下面是別人的代碼———————————————

public class SimpleDemo3

{

static int[] s = new int[9];

static int[] v = new int[9];

static int sum = 0;

public static void main(String[] args)

{

s(0);

System.out.println(sum);

}

public static void s(int code)

{

if (code == 9)

{

int a = s[0], b = s[1], c = s[2], def = s[3] * 100 + s[4] * 10 + s[5], ghi = s[6] * 100 + s[7] * 10 + s[8];

if (c * ghi * (10 - a) == b * ghi + c * def)

{

sum++;

}

}

for (int i = 0; i < 9; i++)

{

if (v[i] == 0)

{

v[i] = 1;

s[code] = i + 1;

s(code + 1);

v[i] = 0;// 回溯

}

}

}

}

總結

以上是生活随笔為你收集整理的java蓝桥杯凑算是,第七届蓝桥杯JAVA B组真题解析-凑算式(第三题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。