本文主要是介绍湘潭大学 1163 查询成绩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
查询成绩 | ||
Accepted : 43 | Submit : 246 | |
Time Limit : 3000 MS | Memory Limit : 65536 KB |
题目描述波波同学是位大四的学生,同时也是一位考研er。为了考上北京邮电大学,他准备了很长时间。不久前,考研成绩终于公布了。波波登陆了成绩查询网站,发现自己密码竟然忘记了!但是幸好,他还记得其中的某些字母。请你判断,他记忆中的字母是否是正确密码的片段。 输入多组样例,每组样例有两行。第一行为正确密码,第二行为波波记得的密码片段,'*'号表示波波不知道的密码片段,可能任意长,也可能为零。每行不超过110字符,首尾不会出现'*'。 输出对于每组样例,能得到正确密码的输出yes,不能的输出no。 样例输入abcdefg ab*f fnoeend f*ed ajfneogbb aj*n*b 样例输出yes no yes Sourceloying |
代码:
#include<stdio.h>
#include<string.h>
char pw[1500], str[1500];
int sta, lenp, lens;
int find(char *s){for (int i = sta; i < lenp; i++){if (pw[i] == s[0] && (lenp - i) >= strlen(s)){int sign = 1;for (int j = i + 1, k = 1; j < lenp&&k < strlen(s); j++, k++){if (pw[j] != s[k]){ sign = 0; break; }}if (sign == 1) return (i + strlen(s));}}return -1;
}
int main()
{while (scanf("%s%s", pw, str) != EOF){lenp = strlen(pw);lens = strlen(str);str[lens++] = '*';int cnt = 0, end = 1;sta = 0;char s[1500];for (int i = 0; i < lens; i++){if (str[i] == '*'){if (cnt == 0) continue;s[cnt++] = '\0';cnt = 0;sta = find(s);if (sta < 0){ end = 0; break; }}elses[cnt++] = str[i];}if (end)puts("yes");elseputs("no");}return 0;
}
这篇关于湘潭大学 1163 查询成绩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!