WY8. 下厨房
描述
牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。输入描述
每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。输出描述
输出一行一个数字表示完成所有料理需要多少种不同的材料。示例1
输入:
BUTTER FLOUR HONEY FLOUR EGG
输出:
4
C 解法, 执行用时: 2ms, 内存消耗: 312KB, 提交时间: 2021-07-30
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef char ch[51]; typedef struct node { struct node* next; ch raw; }Node,*NodePtr; int find_list(NodePtr L,ch str) { NodePtr p=L->next; int flag; while(p) { if(!strcmp(p->raw,str)) { return 1; } p=p->next; } return 0; } int main() { int i=0; int j=0; int count=0; char str[51]; ch temp; NodePtr head,tail; head=(NodePtr)malloc(sizeof(Node)); head->next=NULL; tail=head; while(fgets(str,51,stdin)) //while(scanf("%[^\n]",str)) { int len=strlen(str); for(i=0;i<len;i++) { if(str[i]!=' '&&str[i]!='\n') { temp[j]=str[i]; j++; } else { temp[j]='\0'; if(!find_list(head,temp)) { NodePtr p=(NodePtr)malloc(sizeof(Node)); strcpy(p->raw,temp); tail->next=p; tail=p; count++; } memset(temp,'\0',51); j=0; } } /*int c; while((c=getchar())!='\n'&&c!=EOF);*/ //getchar(); } printf("%d",count); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 352KB, 提交时间: 2018-08-29
#include <stdio.h> #include <stdlib.h> #include <string.h> char material[2500][51] = {0}; int main() { int i,count = 1; scanf("%s",material[0]); for(i = 1; i < 2500; i++) { if(scanf("%s",material[i]) == EOF) break; else { count = count + 1; for(int j = 0; j < i; j++) { if(!strcmp(material[i],material[j])) { count = count - 1; break; } } } } printf("%d",count); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2020-10-16
#include <stdio.h> #include <stdlib.h> #include <string.h> char material[2500][51] = {0}; int main() { int i,count = 1; scanf("%s",material[0]); for(i = 1; i < 2500; i++) { if(scanf("%s",material[i]) == EOF) break; else { count = count + 1; for(int j = 0; j < i; j++) { if(!strcmp(material[i],material[j])) { count = count - 1; break; } } } } printf("%d",count); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2018-08-30
#include <stdio.h> #include <string.h> int main(void) { char Save[1000][100]; char Input[100]; int SaveCounter = 0; int i = 0; while((scanf("%s", &Input)!=EOF)) { i = 0; while(i<=SaveCounter&&strcmp(Input, Save[i])!=0) i++; if(i>SaveCounter) { strcpy(Save[SaveCounter], Input); SaveCounter++; } } printf("%d", SaveCounter); }
C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2021-02-26
#include<stdio.h> int main() { char key[1000]; char no[1000][100]; int count=0; while(scanf("%s",&key)!=EOF) { int temp=0; for(int i=0;i<count;i++) { if(strcmp(no[i],key)==0) { temp=1; break; } } if(temp==0) { strcpy(no[count],key); count+=1; } } printf ("%d",count); }