首页 > 试题广场 >

怪异的洗牌

[编程题]怪异的洗牌
  • 热度指数:4004 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
对于一副扑克牌,我们有多种不同的洗牌方式。一种方法是从中间某个位置分成两半,然后相交换,我们称之为移位(shift)。比如原来的次序是123456,从第4个位置交换,结果就是561234。这个方式其实就是数组的循环移位,为了多次进行这个操作,必须使用一种尽可能快的方法来编程实现。在本题目中,还引入另外一种洗牌方式,就是把前一半(如果总数是奇数,就是(n-1)/2)牌翻转过来,这种操作称之为翻转(flip)。在前面shift操作的结果上进行flip,结果就是165234。当然,如果是实际的扑克牌,直接翻转会造成正反面混在一起的,我们就不管那么多了。 给定n张牌,初始次序为从1到n,经过若干次的shift和flip操作后,结果会是什么样?

输入描述:
输入包括多组测试数据,每组数据的第一行包括两个数 n和k。n表示牌的数目,1<n<1000,k表示下面要进行的操作数量。随后的k行,每行一个整数x,1<=x<=n,表示从第几个位置开始移位。在每一次shift操作后都接一个flip操作。


输出描述:
对于输入的每组数据,计算经过给定的k次shift和flip操作后,各个位置的数值。并按次序在一行上输出所有牌张的值,每个数值(不包括最后一个)后面有一个空格。
示例1

输入

6 1
4
0 0

输出

1 6 5 2 3 4
头像 L456
发表于 2024-03-19 17:19:57
#include <bits/stdc++.h> using namespace std; int main() { int n,k; while(cin>>n>>k) { int a[n]; if(!n&&!k) break; 展开全文
头像 世长
发表于 2024-02-02 10:21:35
#include<cstdio> int main(){ int n,k,nums1[1000],nums2[1000]; while(scanf("%d %d",&n,&k)!=EOF){ if(n==0&&a 展开全文
头像 philos
发表于 2021-03-14 10:40:24
思路 模拟整个过程就好了,数组循环移位+数组逆序 #include<iostream> #include<vector> #include<numeric> using namespace std; void shift_flip(vector<int& 展开全文
头像 在考古的小鱼干很有气魄
发表于 2023-03-11 14:37:20
#include <bits/stdc++.h> #define MAX 1000 using namespace std; int main(){ int data[MAX],res[MAX],n,k,index,i,len; while(cin>>n>> 展开全文
头像 阿明努力编程
发表于 2023-09-05 15:11:54
#include <iostream> using namespace std; void shift(int a[],int x,int n){ //相当于换个手按题意顺序组牌,谁规定非得在同一个手上组牌了 int b[n]; for(int i=0;i<n; 展开全文
头像 24复试上机我必乱杀
发表于 2024-03-09 21:52:50
#include <stdio.h> void reverse(int a[],int l,int h){ int temp; while(l<h){ temp=a[l]; a[l]=a[h]; a[h]=temp; l++;h--; } } int mai 展开全文
头像 牛客32950103号
发表于 2024-03-22 16:56:28
import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { public static void reverse(int[] nums, int s 展开全文
头像 arashi_
发表于 2023-03-01 11:19:32
#include <stdio.h> int a[1002]; void init(){//初始化扑克牌数组 for(int i=0;i<1002;i++){ a[i]=i; } } //数组a[] = 0123456..... void rever 展开全文
头像 WonderFF
发表于 2024-03-16 11:33:40
#include<iostream> #include<string> #include<algorithm> #include<queue> #include<vector> using namespace std; int main() 展开全文

问题信息

难度:
34条回答 3866浏览

热门推荐

通过挑战的用户

查看代码