笨拙的手指——acwing算法题第一天
笨拙的手指
- 方法一
- 方法二
方法一
用暴力枚举法枚举出二进制所有的情况,化为十进制数存放在一个数组中,
然后再去枚举三进制所有的情况,化为十进制一一去和数组中的元素去匹配,如果相等就说明找到了答案,结束程序
1.将m进制的数转为十进制
int get(char* a, int m)
{int ret = 0;int len = strlen(a);for (int i = 0; i < len; i++){ret = ret * m + (a[i]-'0');}return ret;
}
2.去数组中找相等的数
int find(int* arr, int a,int len1)
{for (int i = 0; i < len1; i++){if (a == arr[i])return 1;}return 0;
}
3.完整代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int get(char* a, int m)
{int ret = 0;int len = strlen(a);for (int i = 0; i < len; i++){ret = ret * m + (a[i]-'0');}return ret;
}
int find(int* arr, int a,int len1)
{for (int i = 0; i < len1; i++){if (a == arr[i])return 1;}return 0;
}
int main()
{char a[11], b[11];scanf("%s", a);scanf("%s", b);int len1 = strlen(a);int len2 = strlen(b);int* ret1 = (int*)malloc(sizeof(int) * len1);for (int i = 0; i < len1; i++){a[i] ^= 1;ret1[i] = get(a, 2);a[i] ^= 1;}int p = 0;for (int i = 0; i < len2; i++){char t = b[i];for (int j = 0; j < 3; j++){b[i] = j + '0';int c = get(b, 3);if (find(ret1, c,len1) == 1){printf("%d",c);return 0;}b[i] = t;}}return 0;
}
方法二
枚举二进制的所有情况,化为三进制后,去和b比较,假如仅有一位不相同,则说明该情况就是正确答案,程序结束
- 二进制转化为十进制
int get(char* a, int m)
{int ret = 0;int len = strlen(a);for (int i = 0; i < len; i++){ret = ret * m + (a[i] - '0');}return ret;
}
2.二进制转化为三进制
char* cp(char* a, int m)
{char* arr = (char*)malloc(sizeof(char) * 10);int temp = get(a, m);int i = 0;while (temp){arr[i] = temp % 3 + '0';temp /= 3;i++;}arr[i] = '\0';for (int j = 0; j < i / 2; j++){char t = arr[j];arr[j] = arr[i - j - 1];arr[i - j - 1] = t;}return arr;
}
3.统计每位不一样的个数
int count(char* a, char* b)
{int len1 = strlen(a);int len2 = strlen(b);if (len1 != len2)return 0;int count = 0;while (len2 >= 0 && len1 >= 0){if (a[len1] != b[len2])count++;len1--;len2--;}return count;
}
4.完整代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//二转十
int get(char* a, int m)
{int ret = 0;int len = strlen(a);for (int i = 0; i < len; i++){ret = ret * m + (a[i] - '0');}return ret;
}
//二转三
char* cp(char* a, int m)
{char* arr = (char*)malloc(sizeof(char) * 10);int temp = get(a, m);int i = 0;while (temp){arr[i] = temp % 3 + '0';temp /= 3;i++;}arr[i] = '\0';for (int j = 0; j < i / 2; j++){char t = arr[j];arr[j] = arr[i - j - 1];arr[i - j - 1] = t;}return arr;
}
int count(char* a, char* b)
{int len1 = strlen(a);int len2 = strlen(b);if (len1 != len2)return 0;int count = 0;while (len2 >= 0 && len1 >= 0){if (a[len1] != b[len2])count++;len1--;len2--;}return count;
}
int main()
{char a[30], b[30];scanf("%s", a);scanf("%s", b);int len1 = strlen(a);int len2 = strlen(b);int* ret1 = (int*)malloc(sizeof(int) * len1);for (int i = 0; i < len1; i++){a[i] ^= 1;int t = count(b, cp(a, 2));if (t == 1){printf("%d", get(a, 2));return 0;}a[i] ^= 1;}
}
笨拙的手指——acwing算法题第一天相关推荐
- AcWing算法基础课 第一讲小结(持续更新中)
目录 前言 一.快速排序法及其扩展 快速排序法 介绍 思路 + 步骤 模拟代入 模板 练习 扩展(求第k个数) 思路 代码 二.归并排序法 归并排序 思路 思路 + 步骤 模拟代入 模板 练习 应用( ...
- AcWing算法题常用代码模板
一.基础算法 1.常用代码模板 快速排序算法模板 -- 模板题 AcWing 785. 快速排序 算法步骤: ①确定分界点 ②调整区间 ③递归处理左右两段 Tips: ①如果输入数据量 ...
- AcWing算法基础课第一讲(2):高精度加减乘除、前缀和、差分
文章目录 1. 高精度加法 2. 高精度减法 3. 高精度乘低精度 4. 高精度除以低精度 5. 一维前缀和 6. 二维前缀和 7. 一维差分 8. 二维差分 1. 高精度加法 这里讲解两个大整数的加 ...
- AcWing 算法基础课第一节基础算法1排序、二分
1.该系列为ACWing中算法基础课,已购买正版,课程作者为yxc 2.y总培训真的是业界良心,大家有时间可以报一下 3.为啥写在这儿,问就是oneNote的内存不够了QAQ ACwing C++ 算 ...
- acwing算法题--铁路与公路
原题链接:https://www.acwing.com/problem/content/description/4077/ #include <iostream> #include < ...
- acwing算法题--看图做题
原题链接:https://www.acwing.com/problem/content/3992/ 找规律题 #include<iostream>using namespace std;i ...
- acwing算法题--不同的数
原题链接:https://www.acwing.com/problem/content/3991/ #include <iostream> #include <unordered_m ...
- acwing算法题--二维费用的背包问题
原题链接:https://www.acwing.com/problem/content/8/ #include <iostream>using namespace std;const in ...
- acwing算法题--混合背包问题
原题链接:https://www.acwing.com/problem/content/7/ #include <iostream> #include <vector>usin ...
最新文章
- python与excel做数据可视化-Python的Excel操作及数据可视化
- flutter AppBar
- linux命令之查看文件内容加上行号-nl
- Spring Cloud(三) 熔断器Hystrix
- Android界面性能优化最全总结、原理剖析
- 05章 体检套餐管理系统
- Gamma Correction
- 【从理论到代码】旋转矩阵与欧拉角 一
- 为什么DNN的SectionHead Control图片无法显示,也无法折叠
- 嵌入式 Linux 4.0,嵌入式多媒体中心 OpenELEC 4.0.4
- 面包板电源线怎么接_如何维修面包板电源
- quartz 每月一次_quartz cron表达式 每周一0点怎么设置
- 【数据库】分布式数据库设计
- 火狐浏览器设置代理后出现“建立安全连接失败”问题的解决(由multisim引起
- Oracle 大表数据删除/清理方法小结
- [http]http转义和加解密方法
- 基于fastadmin的工业园区科技园水电费管理系统
- Centos7自动挂载Windows中的NTFS 分区
- res.data, res.data.data, res.data.data.rows的含义
- html移动端实现手写签名,signature手写签名实现,微信公众号浏览器html手写签名实现
热门文章
- TL-R402M路由器恢复出厂设置方法
- unable to access ‘https://github.com/XXX.git/‘: LibreSSL SSL_read: error:02FFF03C:system library:fun
- 20150113-下雨天在窗前
- ZUCC_计算机网络实验_实验01 实验一RJ45原理与制作
- Idea分享项目到全球最大同x交友网站gayhub居然失败了!我居然没有权限!来看看解决方法吧
- 形而上者谓之道,形而下者谓之器——asp.net学习总结
- 大数据开发第一站ODS篇
- 递 归 ,递 推 ,贪 心,学 习 总 结
- Tomcat报错系统找不到指定的路径
- ios 渐变透明背景_渐变色彩的室内应用技巧