| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7501 人关注过本帖
标题:[讨论]第八次编程题目,谢谢大家的支持.
取消只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
我看错了.看错优先级了.

倚天照海花无数,流水高山心自知。
2007-03-19 22:34
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

写了第一个.看看有什么BUG没.
大家继续讨论.
非常感谢大家的支持.

#include<stdio.h>

int main()
{
char str[100];
int a[100];
int top,i,j,min,flag;
while(EOF!=(scanf("%s",str)))
{
top=0;
min=5;//设定当前优先级
for(i=0;str[i]!='\0';i++)
{
flag=1;//左括号
switch(str[i])
{
case '{': a[top]=4;break;
case '[': a[top]=3;break;
case '(': a[top]= 2;break;
case '<': a[top]=1;break;
default :flag=0;break; //右括号
}
if(flag==1)
{

if(a[top]>min)
{
printf("false\n");
return 1;
}
else
{
min=a[top];
top++;
}
}
else
{
switch(str[i])
{
case '}': a[top]=-4;break;
case ']': a[top]=-3;break;
case ')': a[top]= -2;break;
case '>': a[top]=-1;break;
default :printf("false\n"); return 1;
}
if(top<1||a[top-1]*-1!=a[top])
{
printf("false\n");
return 1;
}
else
{
if(top>2)
{
top--;
min=a[top-1];
}
else
{
top=0;
min=5;
}
}
}
}
printf("ture\n");
}
return 1;
}

请不要误会.

[此贴子已经被作者于2007-3-19 23:36:46编辑过]


倚天照海花无数,流水高山心自知。
2007-03-19 23:21
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用PcrazyC在2007-3-19 22:38:24的发言:
{{}}这个可不可以啊

可以,同一级可以.


倚天照海花无数,流水高山心自知。
2007-03-19 23:23
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

刚查了一下,是可以直接利用ASII码来设定优先级.可以再优化.
Mp3aaa斑竹厉害.


倚天照海花无数,流水高山心自知。
2007-03-19 23:35
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用hujian100在2007-3-19 23:29:10的发言:
写就写了, 为什么还要交待的那么清楚“用十来分钟写的程序” 是要显示一下你的能力?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


我改.


倚天照海花无数,流水高山心自知。
2007-03-19 23:35
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
回复:(mp3aaa)nuciewth斑竹这次发挥不好,要不然也...
图片附件: 游客没有浏览图片的权限,请 登录注册


倚天照海花无数,流水高山心自知。
2007-03-19 23:53
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
运行{}{}{[(&lt;&gt;)]}0

倚天照海花无数,流水高山心自知。
2007-03-19 23:53
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
括号配对的条件:括号必须先左后右,并且左右括号数量相等;对于多重括号,从外到内嵌套顺序为:{} -> [] -> () -> <>。例如{[(<>)]}。
可能是我疏忽了,我本以为这句话应该不会产生歧义.我认为题目只说有嵌套括号时,不能出现低优先级里出现高优先级.所以可以嵌套同级括号的.
再者{}[]之类的,应该符合,它不是嵌套.

倚天照海花无数,流水高山心自知。
2007-03-20 10:51
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>

int main()
{
char str[100];
int a[100];
int top,i,j,min,flag;
while(EOF!=(scanf("%s",str)))
{
top=0;
min=5;//设定当前优先级
for(i=0;str[i]!='\0';i++)
{
flag=1;//左括号
switch(str[i])
{
case '{': a[top]=4;break;
case '[': a[top]=3;break;
case '(': a[top]= 2;break;
case '<': a[top]=1;break;
default :flag=0;break; //右括号
}
if(flag==1)
{

if(a[top]>min)
{
printf("false\n");
return 1;
}
else
{
min=a[top];
top++;
}
}
else
{
switch(str[i])
{
case '}': a[top]=-4;break;
case ']': a[top]=-3;break;
case ')': a[top]= -2;break;
case '>': a[top]=-1;break;
default :printf("false\n"); return 1;
}
if(top<1||-1*a[top-1]!=a[top])
{
printf("false\n");
return 1;
}
else
{
if(top>1)
{
top--;
min=a[top-1];
}
else
{
top=0;
min=5;
}
}
}
}
if(top==0)
{
printf("ture\n");
}
else
{
printf("false\n");
}
}
return 1;
}

谢谢iwfy.


倚天照海花无数,流水高山心自知。
2007-03-20 11:13
快速回复:[讨论]第八次编程题目,谢谢大家的支持.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030051 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved