Skip to content

13037: 【原3037】Halting

题目

题目描述

author: sunkai 原OJ链接:https://acm.sjtu.edu.cn/OnlineJudge-old/problem/3037

Description

给一段C++程序,问程序是否会终止。

Input Format

第一行一个整数T,表示测试数据组数。

接下来有T 组数据。

对于每组数据,第一行为一个整数N,表示程序行数,接下来N行为一段C++程序。

Output Format

对于每组数据,若程序会终止,则输出Yes,否则,输出No。

Sample Input

2
5 
int main() 
{ 
    while(1); 
    return 0; 
} 
9 
int main() 
{ 
    int i, sum = 0; 
    for(i=0; i<100; i=i+1) 
    { 
        if(i % 2 == 0) sum = sum + i; 
    } 
    return 0; 
}

Sample Output

No 
Yes

About Testdata

保证所有数据中的程序均是《程序设计》课程已学内容。

前10%的数据,输入的程序均会终止(注意:机考严禁作弊,但可骗分) 。

前 30%的数据,输入的程序行数(N)<=10,T=1,程序中不会出现变量的定义,没有+、-、<、

==、>、<=、>=、&&、||、(、)。

前 60%的数据,输入的程序行数(N)<=20,程序中不会出现循环语句,表达式中没有括号,

没有*、/。

前90%的数据,输入的程序行数(N)<=40,T<3,程序中不会出现 for、break、continue,如果

输入的程序会终止,那么它至多会执行50000条语句(语句由分号界定) 。

100%的数据,输入的程序行数(N)<=100,每行字符数<=80,T<4,只有 main()一个函数,没

有预处理(这也表明了不会出现任何库函数,同时没有 cout, cin等) ,没有注释,数据类型

只有int(这表明了没有 const、double 等) ,运算符只有+、-、*、/、%、<、>、==、<、= >、>=、

&&、||、=、(、),流程控制语句只有 return、break、continue、if、while、for、goto及 goto

对应的标号。

Limits

Time limit: 1000ms, memory limit: 50000kb.

Oops! 本题目还没有解答!

助教老师们编题的速度,已经超过了解题的速度!

OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。

如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!