2018 青岛网络赛c题halting problem -ag凯发k8国际
判断一个指定的程序是一直运行下去还是会停止。停止好判断,就是如何判断是否会一直运行下去。当第二次到达第n步的时候,如果此时的r仍然是第一次到达第n步时候的r,那么这个程序会一直运行下去。
通过这道题还知道了对bool类型的数组处理是比对int类型的数组处理快的。全局变量是比局部变量可以申请的内存多的。
代码:
#include
#include
using namespace std;
const int inf=1e4 7;
bool a[10003][257]; //全局变量。
struct node
{
string str;
int v,k;
}arr[inf]; //还要考虑只有一条语句的时候。也就是没有add的时候。循环的时候一直没变。
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
int flag=0;
scanf("%d",&n);
for(int i=1;i<=n;i )
{
cin>>arr[i].str ;
scanf("%d",&arr[i].v);
if(arr[i].str !="add")
scanf("%d",&arr[i].k );
}
int p=1,flag1=0,r=0;
memset(a,0,sizeof(a));
int i=1,j,k;
while( p!=n 1 )
{
if( a[p][r] ==1 )
{
printf("no\n");
goto x;
}
a[p][r]=1;
if(arr[p].str =="add")
{
r=(r arr[p].v )%6;
p=p 1;
}
else if(arr[p].str =="beq")
{
if(arr[p].v ==r)
p=arr[p].k ;
else
p=p 1;
}
else if(arr[p].str =="bne")
{
if(arr[p].v!=r)
p=arr[p].k;
else
p=p 1;
}
else if(arr[p].str =="blt")
{
if(r
else
p=p 1;
}
else if(arr[p].str=="bgt")
{
if(r>arr[p].v)
p=arr[p].k;
else
p=p 1;
}
}
printf("yes\n");
x:;
}
return 0;
}
总结
以上是ag凯发k8国际为你收集整理的2018 青岛网络赛c题halting problem的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: