当前位置: 代码迷 >> C语言 >> [讨论]第八次编程题目,谢谢大家的支持.
  详细解决方案

[讨论]第八次编程题目,谢谢大家的支持.

热度:127   发布时间:2007-03-19 15:42:28.0
LS有漏洞哦
}}{}{{
你试下
----------------解决方案--------------------------------------------------------
呵呵,谢谢!等下我调试下!
----------------解决方案--------------------------------------------------------
[CODE]

呵呵,这下试下!
#include <stdio.h>
#include <stdlib.h>
#define NUMBER 7

int panduan(char achar[], int n);
int duiying(char achar[], int n);

int main()
{
char achar[NUMBER], ch;
int i;

while(EOF != scanf("%c", &ch))/*判断结束*/
{
i = 0;
achar[0] = ch;

for(i = 1;;i ++)
{
scanf("%c", &achar[i]);
if(achar[i] == '\n')
break;
}
if(panduan(achar, i - 1) && duiying(achar, i - 1))
printf("true\n");
else
printf("false\n");
}

return 0;
}

int panduan(char achar[], int n)/*判断顺序是否正确*/
{
int i = (n + 1) / 2, j;

for(j = 0;j < i - 1;j ++)
if(((achar[j] - achar[j + 1] < 0) && (achar[j] == '(' && achar[j + 1] == '<')) || (achar[j] == '<' && achar[j + 1] == '('))
return 0;
return 1;
}

int duiying(char achar[], int n)/*判断是否对应*/
{
int i = (n + 1) / 2, j;

for(j = 0;j < i;j ++)
if(achar[n - j] - achar[j] != 1 || achar[n - j] - achar[j] != 2)/*判断这里出现了错误*/
return 0;
return 1;
}

[/CODE]
----------------解决方案--------------------------------------------------------
挺快啊
这个{[]()}
----------------解决方案--------------------------------------------------------

比之前简短些
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int *a,i=0,sum=0;
char c[81];

gets(c);

while(c[++i]);
a=(int *)malloc(i*sizeof(int));
for(i=0;c[i];i++)
{
switch(c[i])
{
case '{':a[i]=4;break;
case '[':a[i]=3;break;
case '(':a[i]=2;break;
case '<':a[i]=1;break;
case '>':a[i]=-1;break;
case ')':a[i]=-2;break;
case ']':a[i]=-3;break;
case '}':a[i]=-4;break;
default:a[i]=0;sum=1;break;
}
if(sum==1)
break;
}
if(sum)
puts("false");
else
if(i&1)
puts("false");
else
{
for(i=1;c[i]&&a[i-1]>=a[i];i++);
if(!c[i])
{
sum=i;
for(i=0;i<sum/2&&a[i]==-a[sum-1-i];i++);
if(i==sum/2)
puts("True");
else
puts("false");
}
else
puts("false");
}
free(a);
return 0;
}

[此贴子已经被作者于2007-3-19 16:28:38编辑过]


----------------解决方案--------------------------------------------------------
LS,英语打错了,是TRUE,不是FRUE另外不能这样{}[]
----------------解决方案--------------------------------------------------------
有说这样{}[]不行吗
----------------解决方案--------------------------------------------------------
其实,楼主出这个题目的意思就是要大家写个程序判断一下自已的代码会不会因为括号的问题造成错误
----------------解决方案--------------------------------------------------------
是不行吧,如果全是层层包起来的话那就不用这么麻烦了,直接1--n 2--n-2 3--n-3 就能判断了

[此贴子已经被作者于2007-3-19 16:16:21编辑过]



----------------解决方案--------------------------------------------------------
唉,我调试了一下,我们两个都是对的,你是说他的代码不能通过这个,我是说楼主的意思是要这个也满足

我刚才误解你的意思了
----------------解决方案--------------------------------------------------------
  相关解决方案