第三章 UVa1586 解題報告

2021-07-02 00:09:46 字數 851 閱讀 9601

本題可以使用stl來簡化操作。我使用掃瞄字串一次並處理數字後相乘的辦法將所有的c、h、o、n分成小塊,分別計算分子量之後相加。掃瞄字串時只關注當前下標i對應的s[i]是不是字母,如果是,而且字母後面是數字,就提取數字後和字母的分子量相乘,加到總分子量中。如果s[i]是字母,但s[i+1]也是字母,則直接將s[i]的分子量加到總量中。在進行字串邊界處理時用了min函式,而在字母與分子量對映時用了map。 本題其實相當簡單,每行輸出後要換行,最後一行結束時同樣要打換行符,不用特判,而且要精確到0.001。

以下是**(可直接ac):

#include 

#include

#include

#include

#include

#include

using

std::cin;

using

std::cout;

using

std::string;

using

std::map;

using

std::min;

using

std::ios;

int main()

for(int k=i+1;k//d是原子個數,數字10^n分解的逆運算

d+=(s[k]-'0')*pow(10.0,--cnt);

mass+=m[s.c_str()[i]]*d;

}else

mass+=m[s.c_str()[i]];//後面是字母,直接累加總量}}

cout

<'\n';

}return

0;}

第三章 UVa1225 解題報告

這是乙個考察陣列操作和數字分解的十分入門的問題。基本方法是,註冊乙個10個int空間的陣列cnt 10 列舉當前數,將其每位分解後在cnt中統計個數。分解時採用k 10,k 10的辦法,並在當前數為9 99 999 9999時將記錄數的位數的變數d加一。以下是 可直接ac include inclu...

第三章實踐報告

1.實踐題目 7 1 數字三角形 30 分 給定乙個由 n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形 的頂至底的一條路徑 每一步可沿左斜線向下或右斜線向下 使該路徑經過的數字總和最大。2.問題描述 輸入有n 1行 第 1 行是數字三角形的行數 n,1 n 100。接下來 n行...

演算法第三章上機報告

在乙個地圖上有n個地窖 n 200 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向大序號地窖,也不存在可以從乙個地窖出發經過若干地窖後又回到原來地窖的路徑。某人可以從任意一處開始挖地雷,然後沿著指出的連線往下挖 僅能選擇一條路徑 當無連線時...