【发布时间】:2020-06-05 04:35:30
【问题描述】:
两个玩家正在玩纸牌游戏。每张牌由等级(从 1 到 13)和花色(S、H、C 或 D)组成。对于任意两张牌,等级较高的牌被认为价值较高。如果他们具有相同的等级,则具有更好花色的卡被认为具有更高的价值。花色'S'优于花色'H',后者优于花色'C',后者优于花色'D'。输入永远不会包含两张具有相同点数和花色的牌。输出数组必须包含从较高值到较低值排序的卡片索引。 我能够输出索引,但我无法将西装数组实现到代码中。
最终输出应该是 {0,4,2,1,3,5}。
附:我不允许包含<iostream> 以外的任何库。
谢谢。
#include <iostream>
using namespace std;
int main()
{
int n = 6;
int output[6] ;
int count = 0, max = 0, index;
int rank[] = {10,7,7,4,10,4};
char suit[] = {'S','D','C','C','H','D'};
for(int i=0 ; i< n ; i++)
{
for(int j = 0 ; j < n ; j++)
{
if (rank[j] > max)
{
max = rank[j];
index = j;
}
}
output[count]= index;
count++;
rank[index]=0;
max=0;
}
for(int i=0 ; i<n ; i++)
cout<<output[i] << " ";
}
【问题讨论】:
-
用一个类来描述一张卡片。
-
一个简单的经验法则是问题描述中的名词成为代码中的类。所以你真的需要一个
Card类,甚至是一个简单的Card结构。这意味着您的等级和花色是配对的,因此您不得不将它们排序在一起。这不是库的问题,而是简单的程序设计问题。 -
这能回答你的问题吗? Implementing a Deck of Cards in C++
-
@ywsoliman,请看我的回答。更新了相应排序的索引、排名和西装。如果它解决了您的用例,请点赞并接受
标签: c++