算法竞赛入门经典-第五章字母重排
来源:互联网 发布:淘宝店铺取什么名字好 编辑:程序博客网 时间:2024/05/12 00:14
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n;
char word[2000][10], sorted[2000][10];
#include<stdlib.h>
#include<string.h>
int n;
char word[2000][10], sorted[2000][10];
int cmp_char(const void* _a, const void* _b) {
char* a = (char*)_a;
char* b = (char*)_b;
return *a - *b;//??为什么返回指针的差值??
}
char* a = (char*)_a;
char* b = (char*)_b;
return *a - *b;//??为什么返回指针的差值??
}
int cmp_string(const void* _a, const void* _b) {
char* a = (char*)_a;
char* b = (char*)_b;
return strcmp(a, b);
}
char* a = (char*)_a;
char* b = (char*)_b;
return strcmp(a, b);
}
int main() {
n = 0;
for(;;) {
scanf("%s", word[n]);
if(word[n][0] == '*') break;
n++;
}
qsort(word, n, sizeof(word[0]), cmp_string);
for(int i = 0; i < n; i++) {
strcpy(sorted[i], word[i]);
qsort(sorted[i], strlen(sorted[i]), sizeof(char), cmp_char);
}
n = 0;
for(;;) {
scanf("%s", word[n]);
if(word[n][0] == '*') break;
n++;
}
qsort(word, n, sizeof(word[0]), cmp_string);
for(int i = 0; i < n; i++) {
strcpy(sorted[i], word[i]);
qsort(sorted[i], strlen(sorted[i]), sizeof(char), cmp_char);
}
char s[10];
while(scanf("%s", s) == 1) {
qsort(s, strlen(s), sizeof(char), cmp_char);
int found = 0;
for(int i = 0; i < n; i++)
if(strcmp(sorted[i], s) == 0) {
found = 1;
printf("%s ", word[i]);
}
if(!found) printf(":(");
printf("\n");
}
return 0;
}
//分析思路:
//1.先对输入的字典以单词为单位按照字典序进行排序
//2.对每个字典中的单词按照字符进行排序 排序结果另存到一个二维数组中用于比较
//3.读入要检查的单词直到文件结尾
//4.每个单词进行比较,若相同,输出原来单词,不同,进行下一个比较
//我会怎么写.....
//1.可以改进数据结构 用结构体 2.也是遇见就输出
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct info{
char word[6];
char sort[6];
}dic[2000];
int cmp_char(const void* _a, const void* _b) {
char* a = (char*)_a;
char* b = (char*)_b;
return *a - *b;//??为什么返回指针的差值??
}
while(scanf("%s", s) == 1) {
qsort(s, strlen(s), sizeof(char), cmp_char);
int found = 0;
for(int i = 0; i < n; i++)
if(strcmp(sorted[i], s) == 0) {
found = 1;
printf("%s ", word[i]);
}
if(!found) printf(":(");
printf("\n");
}
return 0;
}
//分析思路:
//1.先对输入的字典以单词为单位按照字典序进行排序
//2.对每个字典中的单词按照字符进行排序 排序结果另存到一个二维数组中用于比较
//3.读入要检查的单词直到文件结尾
//4.每个单词进行比较,若相同,输出原来单词,不同,进行下一个比较
//我会怎么写.....
//1.可以改进数据结构 用结构体 2.也是遇见就输出
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct info{
char word[6];
char sort[6];
}dic[2000];
int cmp_char(const void* _a, const void* _b) {
char* a = (char*)_a;
char* b = (char*)_b;
return *a - *b;//??为什么返回指针的差值??
}
int cmp_string(const void* _a, const void* _b) {
char* a = (char*)_a;
char* b = (char*)_b;
return strcmp(a, b);
}
char input[6];
int main()
{
int n,i;
n=0;
memset((void *)dic,0,2000*sizeof(dic[0]));
do{
scanf("%s",&dic[n].word[0]);
n++;
}while(dic[n].word[0]!='*');
dic[n].word[0]='\n';//??qsort是否需要进行强制类型转化?
qsort((void *)dic,n,sizeof(dic[0]),cmp_string);//因为后面的全是0,所以整体的顺序就是字典单词的顺序
for(i=0;i<n;i++)
{
strcpy(dic[i].word,dic[i].sort);
qsort(dic[i].sort,n,sizeof(dic[0].sort),cmp_char);
}
while(scanf("%s", input) == 1) {
qsort(input, strlen(input), sizeof(char), cmp_char);
for(i=0;i<n;i++)
{
if(strcmp(input,dic[i].sort)==1)
printf("%s",dic[i].word);
printf(" ");
}
printf("\n");
return 0;
}//1.还是不太明白qsort的用法
//2.自己思路不清晰没有自己的想法
//选择合适的数据结构很重要....
//数据结构的选择其实就是看数据之间的关系
//就好比这个程序,数据之间,排序后和未排序后的同一个单词之间的联系
//没有相邻两个单词之间的联系紧密,所以选择结构体就可能比较麻烦
//。。。。自己要原地爆炸boom
char* a = (char*)_a;
char* b = (char*)_b;
return strcmp(a, b);
}
char input[6];
int main()
{
int n,i;
n=0;
memset((void *)dic,0,2000*sizeof(dic[0]));
do{
scanf("%s",&dic[n].word[0]);
n++;
}while(dic[n].word[0]!='*');
dic[n].word[0]='\n';//??qsort是否需要进行强制类型转化?
qsort((void *)dic,n,sizeof(dic[0]),cmp_string);//因为后面的全是0,所以整体的顺序就是字典单词的顺序
for(i=0;i<n;i++)
{
strcpy(dic[i].word,dic[i].sort);
qsort(dic[i].sort,n,sizeof(dic[0].sort),cmp_char);
}
while(scanf("%s", input) == 1) {
qsort(input, strlen(input), sizeof(char), cmp_char);
for(i=0;i<n;i++)
{
if(strcmp(input,dic[i].sort)==1)
printf("%s",dic[i].word);
printf(" ");
}
printf("\n");
return 0;
}//1.还是不太明白qsort的用法
//2.自己思路不清晰没有自己的想法
//选择合适的数据结构很重要....
//数据结构的选择其实就是看数据之间的关系
//就好比这个程序,数据之间,排序后和未排序后的同一个单词之间的联系
//没有相邻两个单词之间的联系紧密,所以选择结构体就可能比较麻烦
//。。。。自己要原地爆炸boom
0 0
- 算法竞赛入门经典 第五章 字母重排
- 算法竞赛入门经典-第五章字母重排
- 算法竞赛入门经典:第五章 基础题目选解 5.8 字母重排
- 字母重排(算法竞赛入门经典)
- 算法竞赛入门经典 5.3.2字母重排
- 算法竞赛入门 5.3.2 字母重排
- 算法竞赛入门——字母重排
- 算法竞赛入门经典 第五章 字符串
- 算法竞赛入门经典 第五章 6174
- 算法竞赛入门经典-第五章源代码
- 算法竞赛入门经典第五章
- 算法竞赛入门经典第五章习题
- 算法竞赛入门经典第五章习题
- 《算法竞赛入门经典》 第五章 基础题目选解
- 算法竞赛入门经典 第五章 因子和阶乘
- 算法竞赛入门经典(第一版) 第五章 解题报告
- 算法竞赛入门经典-第五章错位输出
- 算法竞赛入门经典-第五章TEX括号
- steam vr 简单开发
- git的使用以及遇到的小坑
- Android个人学习笔记-底部导航切换Fragment的实现
- php表单加入Token防止重复提交的方法分析
- The WSDL document http://localhost:8080/xxxx/xxx.wsdl could not be read
- 算法竞赛入门经典-第五章字母重排
- PHP连接到MYSQL数据库的相关操作
- LAMP 搭建
- MAC地址相关
- 函数嵌套调用性能好还是函数分开写性能好?
- Linux编程基础——信号
- 队列的实现(链表方式)
- ReactNative环境搭建
- ConcurrentLinkedQueue使用陷阱(一)