Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
唉。。本来是想找一道菜题秒杀的。。结果纠结了半天。。
1. 统计单词
   忘记考虑两个单词间有多个空格的情况,WA*1。。
//2002年华中科技大学计算机研究生机试题 统计单词
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>

int l[1000];
char s[10000];

int main() {
    
int i, cnt, ll;
    
while(gets(s) != NULL) {
        cnt 
= ll = 0;
        
for(i = 0; s[i]; ++i) {
            
if(s[i] == ' ' || s[i] =='.') {
                
if(!ll) continue;
                l[cnt] 
= ll;
                cnt 
++;
                ll 
= 0;
            }
            
else {
                ll
++;
            }
        }
        
for(i = 0; i < cnt - 1++i) printf("%d ", l[i]);
        printf(
"%d\n", l[cnt - 1]);
    }
    
return 0;
}

2. 守形数
   大水不解释
//2002年华中科技大学计算机研究生机试题 守形数
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>

int n, t;

int main() {
    
while(~scanf("%d"&n)) {
        t 
= n * n;
        
while(n > 0) {
            
if((n % 10!= (t % 10)) break;
            n 
/= 10;
            t 
/= 10;
        }
        
if(!n) puts("Yes!");
        
else
            puts(
"No!");
    }
    
return 0;
}

3. 二叉树遍历
   这题纠结死我了。。RE不下10次。。
   理解错题意了输入中的'#'貌似都是空格,貌似还有不合法数据。。坑爹啊。。
//2002年华中科技大学计算机研究生机试题 二叉树遍历
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>

struct node{
    
int l, r;
    
char c;
}p[
40000];

int stp;
char s[40000];

void build(int pt, int lr) {
    
if(stp >= strlen(s)) return;
    
else if(s[stp] == ' ' || s[stp] == '#') {
        stp
++;
        
return;
    }
    
else {
        
int rt = stp;
        p[stp].c 
= s[stp];
        p[stp].l 
= p[stp].r = -1;
        
if(~pt) {
            
if(!lr) p[pt].l = stp;
            
else
                p[pt].r 
= stp;
        }
        
++stp;
        build(rt, 
0);
        build(rt, 
1);
    }
}

void inorder(int idx) {
    
if(idx == -1return;
    
else {
        inorder(p[idx].l);
        printf(
"%c ", p[idx].c);
        inorder(p[idx].r);
    }
}

int main() {
    
int i;
    
while(gets(s) != NULL) {
        
if(!strlen(s) || s[0== ' ' || s[0== '#') {
            puts(
"");
            
continue;
        }
        stp 
= 0;
        build(
-1-1);
        inorder(
0);
        puts(
"");
    }
    
return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理