- 博客(20)
- 收藏
- 关注
转载 gets()和getchar()的用法
----------------------------------------------------| 问题描述一:(分析scanf()和getchar()读取字符) |--------------------------------------------------scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特殊的。但是有时候却就是因...
2018-06-05 23:39:22
27901
6
原创 排座位 (Codeforces Round #484 (Div. 2) A - Row )
题目链接题意:给你n张凳子,0表示空的,1表示有人。然后让你判断当前位置是否是最大的合法安排方法。其中合法指1的左右都要是0。思路:模拟题,判断是否有两个1相邻(合法性),是否有三个0相邻(最大性),不过对于两端的0要注意最左端的0只要右边的是0那么就不是最大的,最右端的同理。(细节较多)#include<iostream>#include<string>#include&...
2018-05-21 18:53:03
266
原创 hdu1004
#include #include#include#includeusing namespace std;int main(){ int i,n; while(cin>>n&&n) { string a[1005]; int flag[1005]; int maxone,yan;
2018-01-19 22:13:38
376
转载 c++的字符串数组string
用字符数组来存放字符串并不是最理想和最安全的方法。C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对象。一、字符...
2018-01-19 22:09:04
118278
4
原创 单调递增最长子序列
#include #includeusing namespace std;int main(){ int n,i,j; cin>>n; while(n--) { int m;int sum=0; char a[10005]; int dp[10005]={0};
2018-01-01 19:01:42
282
原创 前缀式计算
#include #include double fun(){ char s[20]; if(!~scanf("%s",s)) //这样可以连续输入 exit(0); switch(s[0]) { case '+':return fun()+fun(); case '-':r
2017-12-18 22:57:33
488
原创 超大数减1
对于超大数,一般用字符数组处理#include #include void zuo(char a[],int len){ while(len--) { if(a[len]>'0'&&a[len] { a[len]--; break; } e
2017-12-18 17:17:35
289
原创 输入输出形式
#include #include int main(){ char a[]="bowl"; char b[]="knife"; char c[]="fork"; char d[]="chopsticks"; char f[20];int flag[5]={0}; int n;int i; while(scanf("
2017-12-14 18:25:07
424
原创 求N!的二进制表示最低位的1的位置(从右向左数)
十进制逢10化0,二进制逢2化0;一样的道理。对于10进制来说,逢10也就是逢5,因为10=5*2;一个阶乘中化成素因子乘积,肯定排序为10阶乘结果后面就有多少连续的0。所以对于2进制来说,阶乘素因子有多少2,阶乘结果后面就有多少连续的0。
2017-12-10 22:17:17
1297
原创 最小乘法次数
用递归的思想去解决#includeint count(int n){ if(n==1) return 0; if(n%2==0) return 1+count(n/2); if(n%2==1) return 2+count(n/2);}int main(){ int N; scanf("%d", &N); whil
2017-12-10 16:47:30
384
原创 博弈论
巴什博奕(Bash Game): 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。 最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个, 后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果 n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个
2017-12-10 16:38:53
249
原创 阶乘因式分解
#include int main(){ int s;scanf("%d",&s); while(s--) { int n,m;int sum=0; scanf("%d %d",&n,&m); while(n) { sum+=n/m; //计算n中有多少个能整
2017-12-07 23:49:40
418
1
原创 台阶问题(1or2)
方案一:用递归实现(用递归可以将问题分解成规模更小的问题) #include int fun(int m){ if(m==0) return 1; if(m==1) return 1; return fun(m-1)+fun(m-2);}int main(){ int n; scanf
2017-12-07 20:02:52
396
原创 对超大数求余
对这种超大数的问题,要转换成字符串去解决。#include #includeint main(){ int n; scanf("%d",&n); while(n--) { char a[1000001]; int i,sum=0; scanf("%s",a); int len=str
2017-12-05 19:30:08
559
原创 快幂算法
问题:求a^b mod c常规算法 int mod(int a,int b,int c){ int i,ans=1; for(i=0; i ans=(ans*a)%c; return ans;}常规算法的时间复杂度为O(n),如果b的取值较大时,就会超时。快幂算法数学基础:a^b mod c=((a^2)^(b/2
2017-12-05 13:29:22
252
原创 贪心算法之+-字符串
思路:两个字符串第i个‘-’的距离 (i从1到字符串的‘-’的个数),然后加和即可。(思路还是说不出来,看代码) #include #include int main(){ int i; char a[5005],b[5005]; while(scanf("%s\n",a)&&scanf("%s",b)!=EOF) {
2017-12-03 23:23:20
461
原创 会场安排问题
由于贪心思想,对结束时间排序即可①这种冒泡排序会超时#includestruct yan{ int start; int end; }a[10001],temp;int main(){ int i,j;int s,m;int sum=1; scanf("%d",&m); while(m--) { int
2017-12-02 14:06:31
323
原创 贪心算法之寻找最大数
从左往右,每次都删除第一个比前一个数小的数,如果没有找到,就删除最后一位数。#include #include int main(){ int i,n; scanf("%d",&n); while(n--) { char a[100]; //对于特别大的数,就用字符串来表示 int m;
2017-12-02 13:47:25
698
原创 简单的背包问题
#includestruct good{ int price; int weight; }a[11],temp;int main(){ int n; int i,j;int s,m; scanf("%d",&n); while(n--) { int sum1=0,sum2=0; scanf
2017-11-30 19:50:25
402
转载 同余问题的处理方法
"差同减差,和同加和,余同取余,最小公倍加"所谓同余问题,就是给出“一个数除以几个不同的数”的余数,反求这个数,称作同余问题。首先要对这几个不同的数的最小公倍数心中有数,下面以4、5、6为例,请记住它们的最小公倍数是60。1、差同减差:用一个数除以几个不同的数,得到的余数,与除数的差相同,此时反求的这个数,可以选除数的最小公倍数,减去这个相同的差数,称为:“差同减差”。例:“一
2017-11-19 22:27:06
6254
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人