1056 組合數的和 (15 分)

1056 組合數的和 (15 分)

給定 N 個非 0 的個位數字,用其中任意 2 個數字均可以組合成 1 個 2 位的數字。要求全部可能組合出來的 2 位數字的和。例如給定 二、五、8,則能夠組合出:2五、2八、5二、5八、8二、85,它們的和爲330。ios

輸入格式:

輸入在第一行中給出 N(1 < N < 10),隨後一行給出 N 個不一樣的非 0 個位數字。數字間以空格分隔。數組

輸出格式:

輸出全部可能組合出來的2位數字的和。函數

輸入樣例:

3
2 8 5

輸出樣例:


思路:
  法一:爲了方便進行數字的組合,我選擇使用字符數組來讀入各個數字,而後在兩層循環中組合數字,使用stoi()函數轉化爲
int型進行求和運算
  法二:考慮到每個數字均可以作個位和十位,對於N個數字,每一個數字均可以作n-1次個位和n-1次十位,因此僅須要一次遍歷
便可。
330
#include <iostream> #include <cmath> #include<algorithm> #include<map>
using namespace std; int main() { int sum=0; int n; scanf("%d",&n); char a[n]; for(int i=0;i<n;i++) { scanf(" %c",&a[i]); } for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { if(i==j) continue; char ch[2]; ch[0]=a[i]; ch[1]=a[j]; sum+=stoi(ch); ch[0]=a[j]; ch[1]=a[i]; sum+=stoi(ch); } } cout<<sum<<endl; return 0; }
相關文章
相關標籤/搜索