简单模拟洗牌 *** 作。
基本思路通过数组start、end、next完成洗牌相关的 *** 作。
通过转换关系输出最终结果。
#includeusing namespace std; const int N=54; int start1[N+1],end1[N+1],next1[N+1]; int main(){ int n;//洗牌次数 cin>>n; //初始化每个位置上的牌的编号 for(int i=1;i<=N;i++) start1[i]=i; //读入每个位置上的牌在洗牌后的位置 for(int i=1;i<=N;i++) cin>>next1[i]; //进行n次洗牌 *** 作 while(n--){ //数组end1作为中间数组,存放每一次洗牌后每个位置上牌的编号 for(int i=1;i<=N;i++){ end1[next1[i]]=start1[i]; } //将数组end1赋值给数组start1,为下一次洗牌做准备 for(int i=1;i<=N;i++){ start1[i]=end1[i]; } } //通过转换关系,将编号转换成相应格式后输出 char mp[6]="SHCDJ"; for(int i=1;i<=N;i++){ if(i!=1) cout<<" "; printf("%c%d",mp[(start1[i]-1)/13],(start1[i]-1)%13+1); } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)