题目如下:

这道题经过好久的思考也没找到能一次性输入两组数的方法,只能一次性处理一组数,所以就把代码放上来,欢迎交流留言一起讨论可以放两组数的方法~(QQ 841587906)

 1 #include <iostream>
2 #include <vector>
3 #include <algorithm>
4 #include <string.h>
5 #include <sstream>
6 using namespace std;
7
8 int swapNum(int length,vector<int>,vector<int>);
9
10 int main()
11 {
12 /*先接收数列的长度 创建原数组
13 //接收转换数组 遍历转换数组 交换原数组的数据 再跟目标数组比较是否相等
14 //接收目标数组*/
15
16
17
18
19 vector<int> trans_vec,aim_vec;
20 //数组长度
21 int length;
22 cin >> length;
23
24 //给两个数组分配空间
25 trans_vec.reserve(length);
26 aim_vec.reserve(length);
27
28 //接收的数值
29 int number;
30 //数组的索引值
31 int index = 0;
32
33 //给转换数组和目标数组赋值
34 while(index < length && cin >> number ){
35 trans_vec.insert(trans_vec.begin()+index,number);
36 index ++;
37 }
38 index = 0;
39 while(index < length && cin >> number){
40 aim_vec.insert(aim_vec.begin()+index,number);
41 index ++;
42 }
43
44 //跳出循环的两个条件:time超过次数;经过time转换变成目标数组
45 int time = swapNum(length,trans_vec,aim_vec);
46 if(time < 50){
47 cout << time << endl;
48 }else{
49 cout << "impossible" << endl;
50 }
51
52
53
54 return 0;
55
56 }
57
58
59 int swapNum(int length,vector<int> trans_vec,vector<int> aim_vec){
60 //创建一个经过变化的目标数组 和 原数组
61 int supposeaim_vec[length],orig_array[length];
62 for(int i = 0;i <length;i++){
63 orig_array[i] = i;
64 }
65
66 //读取转换数列中的值 来操作原数组
67 //记录执行转换数组的次数
68 int time = 0;
69 bool flag = false;
70 while(time < 50 && !flag){//当超过50就不再继续操作
71 for(int i = 0;i < length; i++){
72 int j = trans_vec[i];
73 //将原数组的第i个元素放到目标数组的第j个位置
74 supposeaim_vec[j] = orig_array[i];
75 }
76 //运行完将原数组
77 memcpy(orig_array,supposeaim_vec,length*sizeof(int));
78 //完成一次就次数+1
79 time++;
80 flag = true;
81 for(int i = 0;i < length;i++){
82 if(supposeaim_vec[i] != aim_vec[i]){
83 flag = false;
84 }
85 }
86 }
87
88
89 return time;
90
91 }

C++之数组转换的更多相关文章

  1. C#字节数组转换成字符串

    C#字节数组转换成字符串 如果还想从 System.String 类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了.为了进行这样的转换,我们不得不借助另一个类:System.Text.Enc ...

  2. 100怎么变成100.00 || undefined在数字环境下是:NaN || null在数字环境下是0 || 数组的toString()方法把每个元素变成字符串,拼在一起以逗号隔开 || 空数组转换成字符串后是什么?

    100怎么变成100.00?

  3. js对象、数组转换字符串

    对象转换成字符串需要使用toString()方法. 1 var a = function(){ 2 console.log(111); 3 }; 4 var b = a.toString(); 5 c ...

  4. C/C++中数组转换成指针的情况

    数组转换成指针:在大多数用到数组的表达式中,数组自动转换成指向数组首元素的指针.比如: int ia[10]; int *p = ia; //ia转换成指向数组首元素的指针 以下情况上述转换不会发生: ...

  5. http_build_query()就是将一个数组转换成url 问号?后面的参数字符串,并且会自动进行urlencode处理,及它的逆向函数

    http_build_query()就是将一个数组转换成url 问号?后面的参数字符串,并且会自动进行urlencode处理 例如: $data = array( 'foo'=>'bar', ' ...

  6. 如何将PHP对象数组转换成普通数组

    /** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...

  7. 字符串集合或字符串数组转换成json数组

    字符串可以是List<String>类型的字符串集合,也可以是String[]类型的字符串数组,二者转换成JSON数组的方式没有什么不同.下面代码注意关键的部分即可(画红线部分). 1. ...

  8. 怎样把php数组转换成字符串,php implode()

    实例代码 一维数组转换成字符串代码! <?php $arr1=array("shu","zhu","1"); $c=implode(& ...

  9. $.toJSON的用法或把数组转换成json类型

    1. html页面全部代码 <html> <head>     <title></title> <script src="../../S ...

  10. C# 之 将string数组转换到int数组并获取最大最小值

    1.string 数组转换到 int 数组 " }; int[] output = Array.ConvertAll<string, int>(input, delegate(s ...

随机推荐

  1. 【Azure 应用服务】App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)

    问题描述 使用 python websockets 模块作为Socket的服务端,发布到App Service for Linux环境后,发现Docker Container无法启动.错误消息为: 2 ...

  2. k8s入坑之路(4)kubenetes安装

    三种安装方法: 1.kubeadm 2.kubespray 3.二进制安装 kubespray安装kubernetes集群 优点: 1.kuberspray对比kubeadm更加简洁内部集成了kube ...

  3. CVAT 用户指南

    用户指南 计算机视觉标注工具(CVAT)是基于 Web 为计算机视觉算法标注视频和图像的在线工具. 它的灵感来自Vatic免费的.在线的.交互式的视频注释工具. CVAT有许多强大的功能: 在关键帧之 ...

  4. JSON数据和Java对象的相互转换

    JSON解析器: 常见的解析器: Jsonlib, Gson, fastjson, jackson 其中应用最广泛的是jackson,阿里的fastjson虽然比jackson快一点,但存在的问题比较 ...

  5. KMP算法,看这篇就够了!

    普通的模式匹配算法(BF算法) 子串的定位操作通常称为模式匹配算法 假设有一个需求,需要我们从串"a b a b c a b c a c b a b"中,寻找内容为"a ...

  6. CobaltStrike上线Linux

    为获得最佳的阅读体验,请访问我的个人主页: https://xzajyjs.cn/ 在红蓝对抗中,我们常需要对目标进行长时间的控制,cobaltstrike原生对于上线windows比较轻松友好,但如 ...

  7. Ubuntu安装BCC

    Ubuntu安装BCC 教程 官方文档 安装 这里官方文档中首先讲到的是二进制文件的安装,直接通过apt进行安装 sudo apt-get install bpfcc-tools linux-head ...

  8. 多线程合集(一)---信号量,锁,以及并发编程,自定义任务调度和awaiter

    引言 在后端开发中,多线程技术总是后端开发中常用到的技术,那什么是多线程呢,在操作系统中,程序运行的最小单位是进程,那线程则是进程里面的最小单位,关系是一对多的关系,而线程的调度,是由操作系统的时间片 ...

  9. 微信和QQ这么多群,该如何管理好友关系?

    本文节选自<设计模式就该这样学> 1 中介者模式的应用场景 在现实生活中,中介者的存在是不可缺少的,如果没有了中介者,我们就不能与远方的朋友进行交流.各个同事对象将会相互进行引用,如果每个 ...

  10. 【HTML】基础

    HTML基础 2019-07-23  10:16:28  by冲冲 在线编辑HTML/CSS/JS效果,实时查看效果 https://c.runoob.com/front-end/61 1. 概念 ① ...