注册
登录
论坛
搜索
插件
默认风格
默认风格_6hOY
D Dark
greenwall
jeans
fashion
私人消息 (0)
公共消息 (0)
论坛任务 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
【3.A.S.T】网络安全爱好者
»
程序设计
» 第49次编程比赛题目
返回列表
发帖
大眼娃娃
发短消息
加为好友
大眼娃娃
当前离线
UID
703
帖子
4
精华
0
积分
7
威望
9
金钱
7
阅读权限
10
在线时间
0 小时
注册时间
2008-7-16
最后登录
2008-9-30
3.A.S.T士兵
帖子
4
积分
7
威望
9
金钱
7
在线时间
0 小时
1
楼
跳转到
»
正序看帖
打印
字体大小:
t
T
发表于 2008-9-29 09:23
|
只看该作者
第49次编程比赛题目
题目
第49次编程比赛题目
第49次编程比赛题目2007-03-14 10:53题目:给出一个包含各种括号的表达式,判断括号是否配对。括号配对的条件:括号必须先左后右,并且左右括号数量相等;对于多重括号,从外到内嵌套顺序为:{} -> [] -> () -> <>。例如{[(<>)]}。
接口: bool match(char* str); 合法返回true, 否则返回false。
输入范例:
{[(<>)]}
{}
<(>)
<()>
返回:
true
true
false
false
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
/*------------------------------------------------------------------------*/
/* 给出一个包含各种括号的表达式,判断括号是否配对。 */
/* 括号配对的条件:括号必须先左后右,并且左右括号数量相等; */
/* 对于多重括号,从外到内嵌套顺序为:{} -> [] -> () -> <> 例如{[(<>)]} */
/* 接口: Bool match(const char* str); 合法返回True, 否则返回False。 */
/*------------------------------------------------------------------------*/
#include <stdlib.h>
#define GET_PRJ(X) ((X) + (((~(X)) & 4) << 3)) //获得左括号优先级
typedef int Bool;
#define TRUE ( 1 )
#define FALSE ( 0 )
Bool match(const char* str)
{
char *stack = NULL; //栈
int top; //栈顶指针
int len_str; //字符串长度
int i;
for (len_str = 0; '\0' != str[len_str]; ++len_str)
; //取得字符串长度
//初始化栈
stack = (char*)malloc(len_str * sizeof(char));
if (NULL == stack)
{
exit(1);
}
top = -1;
//开始分析字串
for (i=0; i < len_str; ++i)
{
switch (str)
{
case '<': case '(': case '[': case '{':
if ((top < 0) || (GET_PRJ(str) < GET_PRJ(stack[top])))
{//判断左括号是否合法
stack[++top] = str;
}
else
{
free(stack);
return FALSE;
}
break;
case '>': case ')': case ']': case '}':
if ((top < 0) || (str - stack[top] < 0)
|| (str - stack[top] > 2))
{//判断右括号是否非法
free(stack);
return FALSE;
}
else
{
--top;
}
break;
default:
;
break;
}//end switch
}//end for
if (top < 0)
{
free(stack);
return TRUE;
}
else
{//若栈中有残留,说明右括号失配
free(stack);
return FALSE;
}
林子的江南小居
新BLOG,欢迎大家去踩点……
[/url] [url=http://edit.yahoo.com/config/send_webmesg?.target=herj001@yahoo.com.cn&.src=pg]
收藏
分享
cywsh
发短消息
加为好友
cywsh
当前离线
UID
1355
帖子
4
精华
0
积分
7
威望
10
金钱
6
阅读权限
10
在线时间
0 小时
注册时间
2008-7-16
最后登录
2008-9-30
3.A.S.T士兵
帖子
4
积分
7
威望
10
金钱
6
在线时间
0 小时
3
楼
发表于 2008-9-29 09:23
|
只看该作者
头疼... 我嘛时候才能学会自己编点东西来着.. 愁死..最好的辛苦..是想你想到哭..
TOP
嘉瓜
发短消息
加为好友
嘉瓜
当前离线
UID
692
帖子
15
精华
0
积分
24
威望
32
金钱
27
阅读权限
10
在线时间
0 小时
注册时间
2008-7-16
最后登录
2008-9-30
3.A.S.T士兵
帖子
15
积分
24
威望
32
金钱
27
在线时间
0 小时
2
楼
发表于 2008-9-29 09:23
|
只看该作者
呼呼,,,新手的莪,,,,哎,,
TOP
返回列表
【 新 手 入 门 】
初入江湖
有问必答
软件交流
程序设计
黑客播报
操作系统
Windows专区
Unix 专区
【 技 术 交 流 】
原创专区
QQ技巧
反黑知识
网站建设
教程发布
技术交流
免杀技术
0day发布
专题归类
私服技术
【 论 坛 水 区 】
被黑站点
激情灌水
极品贴图
开心乐园
影音专区
广告专区
【 论 坛 管 理 】
新人报到
论坛管理
勋章申请
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]
全国地图
@@@ 加入本站会员 一个月月赚1200+的秘密@@@
@@@ 加入本站会员 一个月月赚1200+的秘密@@@