ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

算法的分享

算法的分享 题目来源于洛谷1.P1125[NOIP 2008提高组]笨小猴方法一AI #include stdio.h #include string.h #define A 100 int main() { char str[A]; scanf(%s,str); int lenstrlen(str); int cnt[26]{0}; //第一步先统计每个字母出现多少次去重只算每种字母 for(int i0;ilen;i) { cnt[str[i]-a]; } int maxn0,minn100; for(int i0;i26;i) { if(cnt[i]0) continue; //没出现过的字母跳过 if(cnt[i]maxn) maxncnt[i]; if(cnt[i]minn) minncnt[i]; } int cmaxn-minn; int flag0; //关键点c1直接不是质数 if(c2) { for(int i2;ic;i) { if(c%i0) { flag1; break; } } } else { flag1; } if(flag1) { printf(No Answer\n); printf(0\n); } else { printf(Lucky Word\n); printf(%d\n,c); } return 0; } 方法二自己写 #include stdio.h #include string.h #define A 100 int main() { int a0,b1,c0,d0; int flag0; int maxn0,minn100; char str[A]; scanf(%s,str); astrlen(str); for(int i0;ia;i) { d0; // qi-1只查i前面不查自己这是最关键修改 for(int qi-1;q0;q--) { if(str[i]str[q]) { d1; break; } } if(d1) { continue; } b1; // 移到这里更保险 for(int ji1;ja;j) { if(str[i]str[j]) { b; } } if(maxnb) { maxnb; } if(minnb) { minnb; } } cmaxn-minn; flag0; // c1直接不是质数 if(c2) { for(int i2;ic;i) { if((c%i)0) { flag1; break; } } } else { flag1; } if(flag1) { printf(No Answer\n); printf(0\n); } else { printf(Lucky Word\n); printf(%d\n,c); } return 0; }2.P1308[NOIP 2011普及组]统计单词数#include stdio.h #include string.h #include ctype.h #define MAX 1000010 int main() { char str1[20]; static char str2[MAX]; scanf(%s,str1); getchar(); // 吃掉换行不然读不到文章 int i0; char ch; while((chgetchar())!\nch!EOF){ str2[i]ch; } str2[i]\0; int astrlen(str1); int bstrlen(str2); // 全部转小写大小转换 for(int k0;ka;k) str1[k]tolower(str1[k]); for(int k0;kb;k) str2[k]tolower(str2[k]); int g0; int q-1; // i最多走到 b‑a for(int i0; i b-a; i) { int ok1; for(int j0;ja;j) { if(str2[ij]!str1[j]) { ok0; break; } } // 字符全部对上了 → 再判断是不是完整单词你说的判断空格 if(ok) { int left_ok (i0) || (str2[i-1] ); int right_ok (ia b) || (str2[ia] ); if(left_ok right_ok) { g; if(q-1) qi; // 存第一次位置 } } } if(g0) printf(-1\n); else printf(%d %d\n,g,q); return 0; }
返回列表