首页 > 其他分享 >每日打卡-16

每日打卡-16

时间:2023-05-04 22:11:07浏览次数:33  
标签:约翰 指向 16 int 每日 数组 打卡 奶牛 指针

一.问题描述

农夫约翰有 N头奶牛,编号 1∼N。

约翰让它们排成一排,以便拍照。

最初,奶牛从左到右按照 a1,a2,…,aN 的顺序排列。

但是,约翰希望奶牛从左到右按照 b1,b2,…,bN 的顺序排列。

为此,他需要对队列进行一系列的调整操作。

每次操作可以选择任意一头奶牛并将其向左移动一些位置。

请问,至少需要多少次操作,才能使奶牛按照约翰满意的顺序排列。

二.设计思路

1.i 指针指向 a[0] , j 指针指向b[0],
2.以b数组作为模板,只要 a[i]!=b[j] 我们就一定可以在a数组找到一个相等的数并把它移动到a数组的最前面 ( j 指针并不是与当前i指针指向的数相等,所以 i指针 指向不变 )
3.标记一下 这个找到的数b[j],防止重复找.
4.在b数组上的数一定可以在a数组上找到,不论 a[i] 是否等于 b[j] 都将 j指针指向下一个 j++
5.如果 a[i]==b[j] 继续往后移,i指针与j指针指向的数相等, i++

三.流程图

四.伪代码 

1

五.代码实现 

#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N],b[N];
bool v[N];  //
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++)cin>>a[i];
    for(int i=0;i<n;i++)cin>>b[i];
    int ans=0;
    for(int i=0,j=0;i<n&&j<n;j++){
        while(v[a[i]])i++;  //找到第一个没有别标记的数
        if(a[i]!=b[j]){  //总能在a上找到与 b[j] 相等的数
            ans++;
            v[b[j]]=true;
        }else {
            i++;
        }
    }
    cout<<ans;
    return 0;
}

 

标签:约翰,指向,16,int,每日,数组,打卡,奶牛,指针
From: https://www.cnblogs.com/leapssisbird/p/17372703.html

相关文章

  • 5.4每日总结
    今天做了什么:完成了首部导航栏,学习了matlab,完成了0.618算法和最速下降法的matlab编程遇到了哪些困难:当跳转activity时用bundle传递参数过大(图片),容易造成系统崩溃闪退,可以采用全局变量存储,或者解码传递压缩后文件明天打算做什么:继续学习web,完善app......
  • 第十二天打卡
    一、问题描述根据银行的不同月利息,现在某人手上有2000元,要求通过计算选择出一种存钱方案,使得这笔钱存入银行20年后获得的利息最多,假设银行对超出存款期限的那一部分时间不付利息。二、设计思路1.由于在每个期限的存钱次数不做限制,故可以直接都遍历一次;2.设计五个数来存储次......
  • 天天打卡9
    编写一个哺乳动物类Mammal,再由此派生出狗类Dog,二者都声明speak()成员函数,该函数在基类中被声明为虚函数。声明一个Dog类的对象,通过此对象调用speak函数,观察运行结果。#include<iostream>usingnamespacestd;classMammal{ public: Mammal(){cout<<"ConstructorinMamma......
  • 打卡
    template<classT>classMyArray{private:intsize;T*data;public:MyArray(ints){size=s;data=newT[size];}voidsort(){inti,j;......
  • 每日总结· 5.4
    今日学习了matlab的使用随后进行了html学习/*表格样式*/table{width:90%;background:#ccc;margin:10pxauto;border-collapse:collapse;/*border-collapse:collapse合并内外边距(去除表格单元格默认的2个像素内外边距*/}th,td{height:......
  • 天天打卡一小时——9
    一.问题描述二问题描述公有派生圆类Circle以点类Point为基类,相较于点类Point,Circle类的结构说明如下:Circle类的数据成员包括:①私有数据成员:X坐标x继承自Point类,Y坐标y继承自Point类。②静态数据常量PI(double型),其值为3.14159③私有数据成员:半径radius(double型)。Circle类成......
  • 建民打卡日记4.27
    一、问题描述“福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出。这里要处理的每个汉字是由一个N × N的网格组成的,网格中的元素或者为字符 @ 或者为空格。而倒过来的汉字所用的字符由裁判指定。二、流程设计首先逐行录入;双重for......
  • 建民打卡日记4.30
    一、问题描述大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。二、流程设计1.录入平局间隔次数,定义计数器;2.End结束游戏,break;3.若......
  • 每日打卡一小时(第十八天)
    一.问题描述6-2【CPP0025】以点类Point及平面图形类Plane为基础设计圆类Circle、以点类Point及平面图形类Plane为基类公有派生圆类Circle,main(void)函数完成对其的测试。Point类结构说明: Point类的数据成员包括:①私有数据成员:X坐标x(double型),Y坐标y(double型)。Point类......
  • 天天打卡一小时——8
    一问题描述 二设计思路将空白处补充完整,实现程序的可运行三 代码实现#include<iostream>usingnamespacestd;classComplex{public:Complex(doubler=0,doublei=0):real(r),imag(i){}Complexoperator+(Complexc)const;//重载双目运算符'+'Complexoperator-=(......