笔记
作者:
cxyjq
,
2024-03-18 23:05:41
,
所有人可见
,
阅读 13
1、sstream库中定义了三种类:istringstream、ostringstream和stringstream
(1)istringstream 的用法:istringstream可以把字符串根据空格分开
string s = "23 23 agd 3423";
istringstream is;
is.str(s);
int val;
while(is >> val)cout << val << " ";//输出为23 23 agd 3423
(2)stringstream,可以看成一个缓冲区,经常用来string<-->int转换。
string s = "1232344546 434737";
sstream is;
is << s;
int n,m;
is >> n >> m;
cout << n << " " << m;//1232344546 434737,实现由string到int的类型转换
同时可以用hex和oct将一个16进制和8进制的字符串,转为int 10进制
2.两个水壶拼水问题
允许的操作是,把水壶清空,装满,或将一个水壶中的水倒入另一个水壶直到一个水壶为空或着满了
那么这几种操作 清空代表两个水壶都为空 可以用 0 0表示
装满代表两个水壶都是满 可以用 1 1 表示
大的水壶向小的水壶中倒到小水水壶 可以用1 -1表示。。。当然着没有包括所有情况
但是我们大概可以看出来了如果用x,y表示两个水壶的乘水量,那么可以拼出来的水
量一定可以表示成 ax + by 的形式,所以很显然要用扩展欧几里得,一条很重要的
性质就是,ax+by一定是x和y的最大公约数的倍数,所以求出x,y的最大公约数,判断
所拼水量与gcd(x,y)成不成倍数关系即可