程序书海码农的世界程序员

蓝杯二十五

2018-01-21  本文已影响24人  逍遥_9353

/* 算法提高 12-2扑克排序  时间限制:1.0s  内存限制:256.0MB提交此题    问题描述  扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是2-10、J、Q、K和A,花色从小到大是方块(diamond)、梅花(club)、红桃(heart)、黑桃(spade)。两张牌比较时先看数字,数字相同时看花色。要求对输入的扑克牌进行从小到大排序。  输入五张牌(表示黑桃2、红桃3、黑桃3、方块A和梅花J): 2 s 3 h 3 s A d J c  输出结果应为:2 s 3 h 3 s J c A d数组长度固定为5。样例输出与上面的样例输入对应的输出。例:数据规模和约定  输入数据中每一个数的范围。*/

#include<iostream> 

#include<algorithm> 

#include<string.h> 

using namespace std; 

char num[15]={0,0,'2','3','4','5','6','7','8','9','10','J','Q','K','A'}; 

char h[6]={0,0,'d','c','h','s'}; 

int f_m(char ch)  {   

int i,j;     

for (i=2;i<15;i++)      {       

  if (num[i] == ch)          {           

return i;          }      }  }

int f_n(char ch)  {     

int i,j;   

for (i=2;i<6;i++)      {       

if (h[i]==ch)         

return i;      }  }

int main()  {   

char a[15],ch;   

int i,j;     

cin>>a;     

for (i=0;i<8;i+=2)      {         

for (j=i+2;j<=8;j+=2)          {             

if (f_m(a[i]) > f_m(a[j]))              {               

ch=a[i];               

a[i]=a[j];               

a[j]=ch;                 

ch=a[i+1];                 

a[i+1]=a[j+1];               

a[j+1]=ch;              }             

else if (f_m(a[i]) == f_m(a[j]))              {               

if (f_n(a[i+1]) > f_n(a[j+1]))                  {                   

  ch=a[i+1];                   

  a[i+1]=a[j+1];                   

  a[j+1]=ch;                   

  ch=a[i];                   

  a[i]=a[j];                 

  a[j]=ch;               

  }              }          }      }   

  for (i=0;i<10;i+=2)      {         

cout<<a[i]<<a[i+1]<<" ";      }     

return 0;  } 

蓝杯二十五 蓝杯二十五 蓝杯二十五 蓝杯二十五
上一篇 下一篇

猜你喜欢

热点阅读