来自远古的声音 2022-03-07 08:27 采纳率: 80%
浏览 46
已结题

C语言求解答,请写出代码实现

请写出一下代码实在是太了,有没没有会的求指教他看i换一个吧也不好
XTZ每天都穿鞋,开始的时候他有n双鞋子在鞋柜里并且编号1到n。每天早上的时候,他都穿最小编号的鞋子,每天晚上,他都把鞋子扔到鞋篮里,
如果现在鞋篮里的鞋子有n-1双的时候,XTZ才会去晒他们,然后第二天晚上的时候重新放到鞋柜中.XTZ是真的好懒。现在就问XTZ在第k天的时候穿的是那双鞋子?
Input
第一行输入T,表示共T组测试数据.(t<=5000)
每组测试数据输入两个变量n,k(2<=n<=10^4,1<=k<=10^5)
Output
输出第K天穿的那双鞋子的编号
Sample Input
3
3 7
3 6
4 9
Sample Output
3
1
2

  • 写回答

1条回答 默认 最新

  • 一只蚂蝼 2022-03-07 15:18
    关注
    
    #include <stdio.h>
    #include <string.h>
    
    typedef struct {
        int n;      //鞋子数量
        int k;      //等待时间
    } Test;         //测试参数类型
    
    //冒泡排序
    void BubbleSort(int arry[],int len)
    {
            int i;
            int j;
            int temp;
    
            for(i = 0 ; i < len - 1 ; i++)//比较次数
            {
                    for(j = 0 ; j < len - 1 - i ; j++)//比较过程
                    {
    
                            if(arry[j] > arry[j + 1]) //比较大小
                            {
                                    temp=arry[j];
                                    arry[j]=arry[j + 1];
                                    arry[j + 1]=temp;
                            }
                    }
    
            }
    
    }
    
    int main()
    {
        Test input[5000] = {0};         //输入参数
        int t = 0;                      //测试组数
        int output[5000] = {0};         //输出数据
        int Shoe_cab[10000] = {0};      //鞋柜数据
        int Shoe_bask[10000] = {0};     //鞋篮数据
        int bask_num = 0;               //鞋篮数量
        int Shoe_curr = 0;              //当天鞋子编号
    
        scanf("%d",&t);     //获取测试组数
    
        for(int i = 0 ; i < t ; i++){
            scanf("%d %d",&input[i].n, &input[i].k);        //获取测试数据
        }
    
        for(int i = 0 ; i < t ; i++){
            //初始化鞋柜数据
            for(int j = 0 ; j < input[i].n ; j++){
                Shoe_cab[j] = j + 1;        //写入鞋子数据
            }
            //实现程序
            for(int j = 0 , x = 0 , bask_num = 0 ; j < input[i].k ; j++){
                Shoe_curr = Shoe_cab[x];        //写入当天鞋子编号
                x++;                            //更新鞋柜索引
    
                if(bask_num >= input[i].n - 1){                                 //判断鞋篮数量是否已满
                    BubbleSort(Shoe_bask, bask_num);                            //将鞋篮数据升序排序
                    memcpy(Shoe_cab, Shoe_bask, bask_num * sizeof(int));        //将鞋篮数据放回鞋柜
                    bask_num = 0;                                               //清空鞋篮数量
                    x = 0;                                                      //重置鞋柜索引
                }
    
                Shoe_bask[bask_num] = Shoe_curr;        //将当天鞋子放入鞋篮
                bask_num++;                             //鞋篮数量更新
            }
    
            output[i] = Shoe_curr;      //写入最终鞋子编号
        }
    
        for(int i = 0 ; i < t ; i++){
            printf("%d\n", output[i]);      //输出最终结果
        }
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 修改了问题 3月7日
  • 创建了问题 3月7日

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了