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