欢迎您来到Tanky Woo的博客:
我们的【C++奋斗乐园】
C++/算法网站:www.cpply.com
C++/算法论坛:www.cppleyuan.com
QQ群:①群:19333724 ②群:23840480 ③群:17314377 ④群:23829384
水题。题目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=1020
有的朋友用栈做的,我没去试。
我是直接计算每个连续的长度,数字记录到num[]数组里,字母记录到b数组里。
然后输出,数字为1则不输出。
代码:
内存:222k 时间:0MS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// HDOJ 1020
// Author: Tanky Woo
#include <iostream>
using namespace std;
char a[10001]; //记录输入的字符串
char b[5000]; //记录每组连续字符的个数
int num[5000]; //连续字符
int i, j;
int nCases; //数据组数
int cnt,tot = 0; //cnt记录当前同一个字母的个数, tot记录总多少不相同连续的字母(表达欠缺。。)
// www.wutianqi.com
int main()
{
scanf("%d", &nCases);
char c;
while(nCases--)
{
tot = 0;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(num, 0, sizeof(num));
getchar();
scanf("%s", a);
for(i = 0; i < strlen(a); [...]
文章来源:
http://www.wutianqi.com/?p=303
posted @
2010-07-10 21:40 Tanky Woo 阅读(135) |
评论 (0) |
编辑 收藏
欢迎您来到Tanky Woo的博客:
我们的【C++奋斗乐园】
C++/算法网站:www.cpply.com
C++/算法论坛:www.cppleyuan.com
QQ群:①群:19333724 ②群:23840480 ③群:17314377 ④群:23829384
水题。题目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=1020
有的朋友用栈做的,我没去试。
我是直接计算每个连续的长度,数字记录到num[]数组里,字母记录到b数组里。
然后输出,数字为1则不输出。
代码:
内存:222k 时间:0MS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// HDOJ 1020
// Author: Tanky Woo
#include <iostream>
using namespace std;
char a[10001]; //记录输入的字符串
char b[5000]; //记录每组连续字符的个数
int num[5000]; //连续字符
int i, j;
int nCases; //数据组数
int cnt,tot = 0; //cnt记录当前同一个字母的个数, tot记录总多少不相同连续的字母(表达欠缺。。)
// www.wutianqi.com
int main()
{
scanf("%d", &nCases);
char c;
while(nCases--)
{
tot = 0;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(num, 0, sizeof(num));
getchar();
scanf("%s", a);
for(i = 0; i < strlen(a); [...]
文章来源:
http://www.wutianqi.com/?p=303
posted @
2010-07-10 21:40 Tanky Woo 阅读(145) |
评论 (0) |
编辑 收藏
欢迎您来到Tanky Woo的博客:
我们的【C++奋斗乐园】
C++/算法网站:www.cpply.com
C++/算法论坛:www.cppleyuan.com
QQ群:①群:19333724 ②群:23840480 ③群:17314377 ④群:23829384
好题,栈入门理解的经典题目。
题目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=1870
看到题目,可以联想到学习数据结构时对表达式的求值,此题相对要简单多了。
找出关键点:(((((B)())))()) -> ()这样一对算空盒子
思想:利用栈除去其中的空盒子,剩下的就是从最外层直接到礼物的层数。(测栈中剩余的”(“或者”)”即可)
操作时,当读到左括号时,入栈;读到B(礼物)的时候,也入栈,标记该盒子非空;读到右括号的时候,判断栈顶元素是不是左括号,如果是说明这是一个空盒,栈顶元素退出即可~如果不是,入栈。最后,统计栈中左或右括号的个数即可得到答案。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// HDOJ 1870
// Author: Tanky Woo
#include <iostream>
#include <stack>
using namespace std;
char cpply[1001];
stack<char> t;
// www.wutianqi.com
int main()
{
while(gets(cpply))
{
while(!(t.empty())) //若t中还有元素,则清空
t.pop();
[...]
文章来源:
http://www.wutianqi.com/?p=301
posted @
2010-07-10 16:38 Tanky Woo 阅读(189) |
评论 (0) |
编辑 收藏
欢迎您来到Tanky Woo的博客:
我们的【C++奋斗乐园】
C++/算法网站:www.cpply.com
C++/算法论坛:www.cppleyuan.com
QQ群:①群:19333724 ②群:23840480 ③群:17314377 ④群:23829384
好题,栈入门理解的经典题目。
题目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=1870
看到题目,可以联想到学习数据结构时对表达式的求值,此题相对要简单多了。
找出关键点:(((((B)())))()) -> ()这样一对算空盒子
思想:利用栈除去其中的空盒子,剩下的就是从最外层直接到礼物的层数。(测栈中剩余的”(“或者”)”即可)
操作时,当读到左括号时,入栈;读到B(礼物)的时候,也入栈,标记该盒子非空;读到右括号的时候,判断栈顶元素是不是左括号,如果是说明这是一个空盒,栈顶元素退出即可~如果不是,入栈。最后,统计栈中左或右括号的个数即可得到答案。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// HDOJ 1870
// Author: Tanky Woo
#include <iostream>
#include <stack>
using namespace std;
char cpply[1001];
stack<char> t;
// www.wutianqi.com
int main()
{
while(gets(cpply))
{
while(!(t.empty())) //若t中还有元素,则清空
t.pop();
[...]
文章来源:
http://www.wutianqi.com/?p=301
posted @
2010-07-10 16:38 Tanky Woo 阅读(192) |
评论 (0) |
编辑 收藏
欢迎您来到Tanky Woo的博客:
我们的【C++奋斗乐园】
C++/算法网站:www.cpply.com
C++/算法论坛:www.cppleyuan.com
QQ群:①群:19333724 ②群:23840480 ③群:17314377 ④群:23829384
题目地址:
http://poj.grids.cn/problem/1833/
此题有两种方法:
方法一:利用STL里的next_permutation()函数,当然,这样题就水了。
方法二:模拟,找出数列变化的特点。排列过程待补。。。大家记得提醒我。
直接发代码了。
方法一:(STL)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Grid 1833
// Author: Tanky Woo
#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 1034
int ans[MAX];
// www.wutianqi.com
int main()
{
int nCases;
int num, k, i, j;
scanf("%d", &nCases);
while(nCases--)
{
scanf("%d %d", &num, &k);
for(i = 1; i <= num; ++i)
scanf("%d", &ans[i]);
for(i = 0; i < k; ++i)
next_permutation(ans+1, ans+num+1);
for(j = 1; j <= num; ++j)
printf("%d ", ans[j]);
printf("\n");
}
return 0;
}
方法二:(模拟)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Grid 1833
// Author: Tanky [...]
文章来源:
http://www.wutianqi.com/?p=298
posted @
2010-07-09 20:45 Tanky Woo 阅读(196) |
评论 (0) |
编辑 收藏
欢迎您来到Tanky Woo的博客:
我们的【C++奋斗乐园】
C++/算法网站:www.cpply.com
C++/算法论坛:www.cppleyuan.com
QQ群:①群:19333724 ②群:23840480 ③群:17314377 ④群:23829384
题目地址:
http://poj.grids.cn/problem/1833/
此题有两种方法:
方法一:利用STL里的next_permutation()函数,当然,这样题就水了。
方法二:模拟,找出数列变化的特点。排列过程待补。。。大家记得提醒我。
直接发代码了。
方法一:(STL)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Grid 1833
// Author: Tanky Woo
#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 1034
int ans[MAX];
// www.wutianqi.com
int main()
{
int nCases;
int num, k, i, j;
scanf("%d", &nCases);
while(nCases--)
{
scanf("%d %d", &num, &k);
for(i = 1; i <= num; ++i)
scanf("%d", &ans[i]);
for(i = 0; i < k; ++i)
next_permutation(ans+1, ans+num+1);
for(j = 1; j <= num; ++j)
printf("%d ", ans[j]);
printf("\n");
}
return 0;
}
方法二:(模拟)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Grid 1833
// Author: Tanky [...]
文章来源:
http://www.wutianqi.com/?p=298
posted @
2010-07-09 20:45 Tanky Woo 阅读(173) |
评论 (0) |
编辑 收藏
欢迎您来到Tanky Woo的博客:
我们的【C++奋斗乐园】
C++/算法网站:www.cpply.com
C++/算法论坛:www.cppleyuan.com
QQ群:①群:19333724 ②群:23840480 ③群:17314377 ④群:23829384
比较经典的模拟题,注意对细节的考虑,以及对过程的模拟。
内存: 1848kB
时间: 16ms
语言: C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Grid 2746 Joseph
// Author: Tanky Woo
#include <iostream>
#define MAX 301
int aLoop[MAX];
// www.wutianqi.com
int main()
{
int n, m;
int i;
while(scanf("%d %d", &n, &m) && n && m)
{
for(i = 0; i < n; i++)
aLoop[i] = i+1;
int nPtr = 0;
for(i = 0; i < n; i++)
{
int nCnt = 0;
while(nCnt < m)
{
while(aLoop[nPtr] == 0)
nPtr = [...]
文章来源:
http://www.wutianqi.com/?p=292
posted @
2010-07-09 17:03 Tanky Woo 阅读(148) |
评论 (0) |
编辑 收藏
欢迎您来到Tanky Woo的博客:
我们的【C++奋斗乐园】
C++/算法网站:www.cpply.com
C++/算法论坛:www.cppleyuan.com
QQ群:①群:19333724 ②群:23840480 ③群:17314377 ④群:23829384
比较经典的模拟题,注意对细节的考虑,以及对过程的模拟。
内存: 1848kB
时间: 16ms
语言: C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Grid 2746 Joseph
// Author: Tanky Woo
#include <iostream>
#define MAX 301
int aLoop[MAX];
// www.wutianqi.com
int main()
{
int n, m;
int i;
while(scanf("%d %d", &n, &m) && n && m)
{
for(i = 0; i < n; i++)
aLoop[i] = i+1;
int nPtr = 0;
for(i = 0; i < n; i++)
{
int nCnt = 0;
while(nCnt < m)
{
while(aLoop[nPtr] == 0)
nPtr = [...]
文章来源:
http://www.wutianqi.com/?p=292
posted @
2010-07-09 17:03 Tanky Woo 阅读(167) |
评论 (0) |
编辑 收藏
欢迎您来到Tanky Woo的博客:
我们的【C++奋斗乐园】
C++/算法网站:www.cpply.com
C++/算法论坛:www.cppleyuan.com
QQ群:①群:19333724 ②群:23840480 ③群:17314377 ④群:23829384
题意,如果数字大于10,则向最近的十位数四舍五入,
若结果大于100,接向最近的百位四舍五入。。。
号称应该是用递归做的,但是题目水了,所以用水方法就可以做出来了。
注意对问题的分析。
题目地址:
http://acm.pku.edu.cn/JudgeOnline/problem?id=3077
Memory: 144K Time: 16MS
Language: C++ Result: Accepted
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
using namespace std;
int n, cnt; // n记录要输入几个数, cnt记录要输出几个0
int x; //x表示输入的数
int temp; //temp用来存储最后一位数字
int main()
{
scanf("%d", &n);
while(n--)
{
cnt = 0;
scanf("%d", &x);
while(x >= 10)
{
temp = x % 10;
x /= 10;
cnt ++;
if(temp >= 5)
x++;
}
printf("%d", x);
for(int i = 0; i < cnt; i++)
printf("0");
printf("\n");
}
return 0;
}
欢迎您来到C++奋斗乐园,原创文章,转载请注明: 转载自Tanky Woo 的程序人生
文章标题: [...]
文章来源:
http://www.wutianqi.com/?p=289
posted @
2010-07-08 18:37 Tanky Woo 阅读(125) |
评论 (0) |
编辑 收藏
欢迎您来到Tanky Woo的博客:
我们的【C++奋斗乐园】
C++/算法网站:www.cpply.com
C++/算法论坛:www.cppleyuan.com
QQ群:①群:19333724 ②群:23840480 ③群:17314377 ④群:23829384
题意,如果数字大于10,则向最近的十位数四舍五入,
若结果大于100,接向最近的百位四舍五入。。。
号称应该是用递归做的,但是题目水了,所以用水方法就可以做出来了。
注意对问题的分析。
题目地址:
http://acm.pku.edu.cn/JudgeOnline/problem?id=3077
Memory: 144K Time: 16MS
Language: C++ Result: Accepted
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
using namespace std;
int n, cnt; // n记录要输入几个数, cnt记录要输出几个0
int x; //x表示输入的数
int temp; //temp用来存储最后一位数字
int main()
{
scanf("%d", &n);
while(n--)
{
cnt = 0;
scanf("%d", &x);
while(x >= 10)
{
temp = x % 10;
x /= 10;
cnt ++;
if(temp >= 5)
x++;
}
printf("%d", x);
for(int i = 0; i < cnt; i++)
printf("0");
printf("\n");
}
return 0;
}
欢迎您来到C++奋斗乐园,原创文章,转载请注明: 转载自Tanky Woo 的程序人生
文章标题: [...]
文章来源:
http://www.wutianqi.com/?p=289
posted @
2010-07-08 18:37 Tanky Woo 阅读(79) |
评论 (0) |
编辑 收藏