这3道题做不出来,麻烦你帮我看下
临近年尾我的工作很忙,所以要解决你的问题可能会比较迟。如果是比较急的话我也没办法。
第一道题不难,可以立刻给你弄个代码;第二道题字太多,暂时没时间去看;第三道就是图论里的有向图问题,不过一般都是讨论某点遍历问题或者是深度/广度搜索,像你这种“任意两点存在路径”这种问题的话我要花点时间翻书和研究。
(PS:居然在给你发信息的时候,系统说找不到这个用户。。
)
先给你第一道题:(PS:不过这段代码并没有考虑输入异常)
#include
#define MAXSIZE 1000000
using namespace std;
void main()
{
char input[MAXSIZE+1];
char *mypoint=NULL;
long longestSize=0;
long nowSize=0;
long num=0;
long mystack=0;
memset(input,0,MAXSIZE+1);
cin>>input;
mypoint=input;
while(*mypoint)
{
switch(*mypoint)
{
case '(':
mystack++;
break;
case ')':
if(mystack)
mystack--;
break;
}
if(mystack)
nowSize++;
else
{
if(nowSize)
{
nowSize++;
if(nowSize>longestSize)
{
longestSize=nowSize;
num=0;
}
else if(nowSize==longestSize)
num++;
nowSize=0;
}
}
mypoint++;
}
cout<