演算法訓練 C Calculations

2022-09-04 01:30:09 字數 1703 閱讀 9755

演算法訓練 c*++ calculations  

時間限制:2.0s   記憶體限制:64.0mb

問題描述

c*++語言和c++語言非常相似,然而c*++的程式有時會出現意想不到的結果。比如像這樣的算術表示式:

表示式=基本式 / 表示式+基本式 / 表示式-基本式

基本式=增量 / 係數*增量

增量=a++ / ++a

係數=0/1/2/……/1000

如「5*a++-3*++a+a++」是合法的c*++表示式。

計算這樣的表示式的值的方法:首先是每個基本式進行計算,然後按照正常的算術運算法則計算。如果乙個基本式包含「a++」,則先進行乘法運算再使變數a權值+1;如果乙個基本式包含「++a」,則先使變數a權值+1再進行乘法運算。

然而基本式可以按任意順序計算,這就是為什麼計算結果是完全無法預料的。

你的任務就是去找到最大的可能結果。

第一行,乙個整數n,表示變數a的初始值。

第二行,乙個合法的c*++表示式。

共一行,乙個整數ans,表示最大可能結果。

輸入格式

input 1:

15*a++-3*++a+a++

input 2:

3a+++++a

輸出格式

output 1:

11output 2:

8資料規模和約定

對於20%的資料,表示式長度<=20。

另有20%的資料,滿足n>=0。

對於100%的資料,-1000<=n<=1000,表示式長度<=10000。

注意表示式開頭可能有負號!

1 #include 2 #include 

3#define maxsize 100114/*

大致思想為將每個++a或者a++的係數提取出來進行排序,之後按照

5a從初始值開始遞增的形式進行相加,需要注意的是++a的情況,需要提前額外加一次*/6

intn, ans, k, coe, len, outcome, c[maxsize];

7char

e[maxsize], s[maxsize];89

void sort(int

x)10

else23}

24}25}

2627

intcalculate()

2840

41 s[0] = '+'

;42 len ++;43}

4445

for(i = 0; i < len; i += 3

)else

5253 i ++;

54 j = 0;55

while('0'

<= s[i] && s[i] <= '9'

)5960if(s[i] == '*'

)else

6566 coe *=j;

67 c[++k] =coe;

68 outcome += (n-(s[i] == '

a')) *coe;69}

7071

sort(k);

72for(i = 1; i <= k; i ++)

7576

return

outcome;77}

7879

intmain()

80

DL RBM訓練演算法

在學習hinton的stack autoencoder演算法 reducing the dimensionality of data with neural networks 之前需要了解什麼是rbm,現在就我學習的情況,查詢的資料 大部分來自部落格 簡單介紹一下rbm。當然,這裡面還有同組實驗的同...

演算法訓練 C Calculations

問題描述 c 語言和c 語言非常相似,然而c 的程式有時會出現意想不到的結果。比如像這樣的算術表示式 表示式 基本式 表示式 基本式 表示式 基本式 基本式 增量 係數 增量 增量 a a 係數 0 1 2 1000 如 5 a 3 a a 是合法的c 表示式。計算這樣的表示式的值的方法 首先是每個...

演算法訓練 暗戀

演算法訓練 暗戀 時間限制 1.0s 記憶體限制 256.0mb 問題描述 同在乙個高中,他卻不敢去找她,雖然在別人看來,那是再簡單不過的事。暗戀,是他唯一能做的事。他只能在每天課間操的時候,望望她的位置,看看她傾心的動作,就夠了。操場上的彩磚啊,你們的位置,就是他們能夠站立的地方,他倆的關係就像磚...