C/C++培训
达内IT学院
400-996-5531
1、数组元素循环右移问题
思路:
最长可能输入20位整数,long long也有可能会溢出,只能用字符串处理。
注意string的每一位是一个char,做计算注意-'0'
自己实现计算,准备一个进位项,由于只做翻倍,可简单判断此位>5进位项为1,否则为0
由于翻倍后可能位数+1,预设翻倍后的char数组时按+1大小来开,计算结束后,通过判断最高位,将正确的char赋到字符串中去,后面用字符串来处理
判断是否是原数的数字调换顺序,只要组成两个数的数字个数都对应即可确定。
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main()
{
string ori_num;
cin >> ori_num;
bool isPermutation = true;
int ori_bitnum[10] = {0};
char *double_num = new char[ori_num.length()+1];
if (ori_num[0] >= '5') isPermutation = false;
char carry = '0';
for (int i = ori_num.length(); i > 0; i--){
double_num[i] = (ori_num[i-1] - '0') * 2 % 10 + carry;
carry = ori_num[i-1] < '5'? '0': '1';
++ori_bitnum[ori_num[i-1]-'0'];
}
double_num[0] = carry;
string double_numstr = carry != '0'? double_num: double_num + 1;
if(isPermutation){
int double_bitnum[10] = {0};
for (int i = 0; i < ori_num.length()+1; i++){
++double_bitnum[double_numstr[i]-'0'];
}
for (int i = 0; i < 10; i++){
if (ori_bitnum[i] != double_bitnum[i]){
isPermutation = false;
break;
}
}
}
printf("%s\n",isPermutation? "Yes": "No");
cout << double_numstr;
return 0;
}
2、Shuffling Machine
思路:多开一个数组,按给定的顺序将原数组的卡片内容赋过去,如果多次操作,就将新的数组搬运到原数组中去。
#include<iostream>
#include<string>
using namespace std;
string cards[54];
string new_cards[54];
void copyCards(){
for (int i = 0; i < 54; i++){
cards[i] = new_cards[i];
}
}
int main()
{
for (int i = 0; i < 54; i++){
if (i < 13){
cards[i] = "S";
cards[i].append(to_string(i+1));
}else if (i < 26){
cards[i] = "H";
cards[i].append(to_string(i-12));
}else if (i < 39){
cards[i] = "C";
cards[i].append(to_string(i-25));
}else if (i < 52){
cards[i] = "D";
cards[i].append(to_string(i-38));
}else{
cards[i] = "J";
cards[i].append(to_string(i-51));
}
}
int k;
cin >> k;
int order[54];
for (int i = 0; i < 54; i++){
cin >> order[i];
}
for (int j = 0; j < k; j++){
for (int i = 0; i < 54; i++){
new_cards[order[i]-1] = cards[i];
}
copyCards();
}
for (int i = 0; i < 53; i++){
cout << cards[i] << " ";
}
cout << cards[53];
return 0;
}
当你还在担心能否就业时,达内学员提前被企业录取;当你转辗于各大招聘会时,达内学员收到了高薪offer;当你在各大招聘网站投递简历时,达内学员中有人一毕业进入五百强名企。所以选择很重要。找C++培训班,选达内就对了。
版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved