[C_SO16-易] 撲克牌牌組整理─接龍
成績: 0 / 倒扣: 0.8
問題描述 :
撲克牌遊戲「接龍」, 遊戲玩法為 7 先 出然後依序排列,因此也叫做「排七」; 請為「接龍」設計單一玩家之手牌整理程式。
輸入說明 :
輸入第一個變數 n 作為張數, n>=2 ,接著輸入每張牌的花色及數字:
花色: 1: 黑桃、 2: 紅心、 3: 方塊、 4: 梅花
數字: 1 到 9 , 10:A 、 J:B 、 Q:C 、 K:D
輸出說明 :
依花色黑桃→紅心→方塊→梅花為主排序,數字為次排序。
範例 :
撲克牌遊戲「接龍」, 遊戲玩法為 7 先 出然後依序排列,因此也叫做「排七」; 請為「接龍」設計單一玩家之手牌整理程式。
輸入說明 :
輸入第一個變數 n 作為張數, n>=2 ,接著輸入每張牌的花色及數字:
花色: 1: 黑桃、 2: 紅心、 3: 方塊、 4: 梅花
數字: 1 到 9 , 10:A 、 J:B 、 Q:C 、 K:D
輸出說明 :
依花色黑桃→紅心→方塊→梅花為主排序,數字為次排序。
範例 :
輸入範例 | 輸出範例 |
13 2 6 3 A 1 8 2 D 4 8 3 3 4 C 1 1 4 5 1 C 2 9 3 8 3 5 | 1 1 1 8 1 C 2 6 2 9 2 D 3 3 3 5 3 8 3 A 4 5 4 8 4 C |
- #include <iostream>
- #include <string>
- #include <sstream>
- #include <stdio.h>
- using namespace std;
- int main() {
- // [C_SO16-易] 撲克牌牌組整理─接龍
- int n;//手排數量
- string s;
- getline(cin, s);
- n = stoi(s);
- int color[n], num[n];
- int count = 0;
- while(getline(cin, s))
- {
- stringstream ss(s);
- string token;
- //字串切割
- while (getline(ss, token, ' '))
- {
- if(token == "A") {token = "10";}
- else if(token == "B") {token = "11";}
- else if(token == "C") {token = "12";}
- else if(token == "D") {token = "13";}
- if(count % 2 == 0)
- {
- color[int(count/2)] = stoi(token);
- }
- else if(count % 2 != 0)
- {
- num[int(count/2)] = stoi(token);
- }
- count++;
- }
- //排序花色
- for (int i = 0; i < n; i++)
- {
- int pos = i;
- for (int j = i; j < n; j++)
- {
- int a = color[j];
- int b = color[pos];
- if (a < b)
- {
- pos = j;
- }
- }
- swap(color[pos], color[i]);
- swap(num[pos], num[i]);
- }
- //排序數字
- for (int i = 0; i < n; i++)
- {
- int pos = i;
- for (int j = i; j < n; j++)
- {
- if (color[j] == color[pos])
- {
- if(num[pos] > num[j])
- {
- swap(num[pos], num[j]);
- }
- }
- }
- }
- //輸出
- for(int i = 0;i < n;i++)
- {
- if(i != 0)
- {
- if(num[i] == 10) {cout << " " << color[i] << " " << "A";}
- else if(num[i] == 11) {cout << " " << color[i] << " " << "B";}
- else if(num[i] == 12) {cout << " " << color[i] << " " << "C";}
- else if(num[i] == 13) {cout << " " << color[i] << " " << "D";}
- else{cout << " " << color[i] << " " << num[i];}
- }
- else
- {
- if(num[i] == 10) {cout << color[i] << " " << "A";}
- else if(num[i] == 11) {cout << color[i] << " " << "B";}
- else if(num[i] == 12) {cout << color[i] << " " << "C";}
- else if(num[i] == 13) {cout << color[i] << " " << "D";}
- else{cout << color[i] << " " << num[i];}
- }
- }
- cout << endl;
- }
- return 0;
- }
沒有留言:
張貼留言