poj 1363 线上指导+源代码

poj 1363 线上指导+源代码,最好有注释,并详细跟我解释~

1个回答

#include
#include
using namespace std;
int N;
int out[1024];
int in[1024];
int main()
{
int i;
for(i=1;i<=1000;++i)
in[i]=i;
while(scanf("%d",&N)==1&&N)
{
while(scanf("%d",&out[1])&&out[1])
{
for(i=2;i<=N;++i)
scanf("%d",&out[i]);
int ok;
int pin=1,pout=1;

stack S;
while(1)
{
if(pin<=N&&in[pin]!=out[pout]&&(S.empty()||!S.empty()&&S.top()!=out[pout]))
S.push(in[pin++]);

else if(pin<=N&&in[pin]==out[pout])
{
++pin;
++pout;
}
else if(!S.empty()&&S.top()==out[pout])
{
S.pop();
++pout;
}
else
{
ok=0;
break;
}
if(pout==N+1)
{
ok=1;
break;
}

}
printf("%s\n",ok?"Yes":"No");

}
printf("\n");
}
return 0;

}
我是最快的,有问题就问。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
poj 1363 线上指导+源代码
poj 1363 线上指导+源代码,最好有注释,并详细跟我解释~
poj 2891 的源代码和站内线上解释
poj 2891 的源代码和站内线上解释,有解释才给分啊。。
Catch the cow(POJ3278) 编译器上没问题, OJ上一直runtime error?
[原题网址](http://poj.org/problem?id=3278 "Catch the cow") 下面是我已经在编译器上通过的代码,但是OJ上始终会RE (使用的是广度优先搜索的方法) ``` #include <stdio.h> #include <stdlib.h> #define MAX_N 100000 int n, k, ans; int que[MAX_N+10][2]; int vis[MAX_N+10]; int head, tail; void bfs( int x); void enqueue ( int x, int time); int main(void) { scanf("%d %d", &n, &k); if( n>k) { ans = n-k; } else { bfs(n); } printf("%d\n", ans); return 0; } void bfs( int x) { enqueue(x, 0); vis[x] = 1; while(head<tail) { int i, nowx, nowtime; nowx = que[head][0]; nowtime = que[head][1]; head ++; if( nowx == k) { ans = nowtime; break; } for( i=1; i<=3; i++) { if( i==1 && vis[nowx-1]!=1 && nowx-1>=0 && nowx-1 <= MAX_N) { enqueue( nowx-1, nowtime+1); vis[nowx-1] = 1; } if( i==2 && vis[nowx+1]!=1 && nowx+1>=0 && nowx+1 <= MAX_N) { enqueue( nowx+1, nowtime+1); vis[nowx+1] = 1; } if( i==3 && vis[nowx*2]!=1 && nowx*2>=0 && nowx*2 <= MAX_N) { enqueue( nowx*2, nowtime+1); vis[nowx*2] = 1; } } } } void enqueue( int x, int time) { que[tail][0] = x; que[tail][1] = time; tail ++; } ``` 一开始查了之后说可能是什么栈空间不够,就尝试了一下动态分配空间 (萌新还没学指针,就在网上照猫画虎贴了进去), 但是数字只要大一点程序就无法输出结果 更改后的代码如下: ``` #include <stdio.h> #include <stdlib.h> #define MAX_N 100001 int n, k, ans; //int que[MAX_N+10][2]; /*之前的方案,但同样RE了,可能是空间不足(?),所以尝试如下动态分配的方法*/ //int vis[MAX_N+10]; int head, tail; void bfs( int x, int **que, int *vis); void enqueue ( int x, int time, int **que); int main(void) { int **que; int i, j; int *vis; que = (int**)malloc(sizeof(int*)*MAX_N); //为两个数组分配空间 for( i=0; i<MAX_N; i++) { que[i] = (int*)malloc(sizeof(int)*2); } vis = (int*)malloc(sizeof(int)*MAX_N); scanf("%d %d", &n, &k); if( n>k) { ans = n-k; } else { bfs(n, que, vis); //进入深搜 } printf("%d\n", ans); return 0; } void bfs( int x, int **que, int *vis) { enqueue(x, 0, que); vis[x] = 1; while(head<tail) { int i, nowx, nowtime; nowx = que[head][0]; //队列数据的取出 nowtime = que[head][1]; head ++; if( nowx == k) //结束条件 { ans = nowtime; break; } for( i=1; i<=3; i++) //对三种可能进行遍历 { if( i==1 && vis[nowx-1]!=1 && nowx-1>=0 && nowx-1 <= MAX_N) { enqueue( nowx-1, nowtime+1, que); vis[nowx-1] = 1; } if( i==2 && vis[nowx+1]!=1 && nowx+1>=0 && nowx+1 <= MAX_N) { enqueue( nowx+1, nowtime+1, que); vis[nowx+1] = 1; } if( i==3 && vis[nowx*2]!=1 && nowx*2>=0 && nowx*2 <= MAX_N) { enqueue( nowx*2, nowtime+1, que); vis[nowx*2] = 1; } } } } void enqueue( int x, int time, int **que) //队列数据的写入 { que[tail][0] = x; que[tail][1] = time; tail ++; } ``` 请教一下大佬们上面RE的原因到底是什么, 还有下面的动态分配有什么问题,感激不尽
poj 2058算法题Word Encoding完整代码
题目描述 In any language, certain combinations of letters do not appear (or at least appear so seldom that they can be considered non-existent). For instance, there are no English words containing the three letter combination buv as a substring. Given a list of letter combinations that do not exist, the number of possible "words" in a language can be reduced a lot (a "word" here means any combination of letters that doesn't contain any of the given letter combinations as a substring). If we order all such words by increasing length, ordering words of the same length alphabetically, we can enumerate them starting from 1. Assume that the alphabet always consists of the lower case letters 'a' to 'z'. For instance, if the list only contains the combinations q, ab and aaa, the words would be enumerated like this: 1. a 2. b ... 16. p 17. r ... 26. aa 27. ac ... 649. zz 650. aac Given the list of letter combinations, write a program that for a given word outputs its number, and for a given number ouputs its word. You can assume that none of the words will exceed 20 characters and no number will be greater than 2 000 000 000 (for both input and output). 输入 The input will contain several test cases. The number of test cases T appears on a line by itself. Then follow T test cases. Each test case starts with a line containing two integers,N (the number of letter combinations, non-negative, at most 1 000) and M (the number of queries for this list, positive, at most 100). Then follow N lines, each containing a lower case letter combination (between 1 and 3 letters, inclusive). After that follow M lines, each containing either a positive integer or a lower case word. If it's a word, it will not contain any of the combinations of letters in the list for this test case. If it's a number, it will not be greater than the number of words in the language. 输出 For each query, output a single line containing either the word's corresponding number, or the number's corresponding word. 样例输入 2 3 4 q ab aaa 16 r 27 aac 7 2 a b c d ef ghi ijk 102345678 ksvfuw 样例输出 p 17 ac 650 xexgun 39174383
POJ上判断是否为字符子串的问题
``` #include<iostream> #include<string> using namespace std; int main() { string s, t; while (cin >> s >> t) { int lens, lent, i, j; lens = s.size(); lent = t.size(); i = j = 0; while (i<lens) { while (j < lent && t[j] != s[i]) j++; if (j == lent) break; i++; } if (i == lens && lens!=lent) cout << "Yes" << endl; else cout << "No" << endl; } return 0; } ``` 这是POJ上的1936题,判断s是否为t的子串,我试了好几次都没问题,但是提交上去 又不对;我以为s和t不能完全相同,于是在输出"Yes"的判断条件里面又加上了长度必须相等,但还是不对,有谁知道问题所在吗?
初学搜索 求助 POJ 3309 思路...
RT 链接: [点击打开](http://poj.org/problem?id=3309 "")
poj 1226我的代码为什么wa,求hack,给出测试数据,或者思路的错误
代码如下: //#include<bits\stdc++.h> #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<string> using namespace std; const int maxn = 105; int next[maxn]; int ans[maxn]; string s[maxn]; void getnext(string a) { int i = 0;int j = -1; next[0] = -1; while(i<a.length()){ if(j == -1||a[i] == a[j]) { i++;j++; next[i] = j; } else j = next[j]; } } int kmp(string a,string b){ getnext(a); int ans = 0; int al = a.size(); int bl = b.size(); //cout<<b<<endl; int i = 0;int j = 0; while(i<bl){ if(j == -1||a[j] == b[i]){ //cout<<i<<" "<<j<<a[j]<<b[i]<<endl; i++;j++; } else{ j = next[j]; } ans = max(ans,j); if(j == al) j = next[j]; } return ans; } string jianyi(string a){ string b = a; reverse(b.begin(),b.end()); b = b.substr(0,b.size()-1); reverse(b.begin(),b.end()); return b; } int main() { int T; cin>>T; while(T--){ memset(ans,0x3f,sizeof(ans)); int n; cin>>n; if(n == 0) {cout<<"0"<<endl;continue;} if(n == 1){ cin>>s[0]; cout<<s[0].size()<<endl; continue; } int mini = 0; int minsize = 0x3f3f3f; for(int i = 0;i<n;i++){ cin>>s[i]; if(s[i].size()<minsize) { minsize = s[i].size(); mini = i; } } string a = s[mini]; string b = a; reverse(b.begin(),b.end()); for(int i = 0;i<s[mini].length();i++){ for(int j = 0;j<n;j++){ if(j == mini)continue; // cout<<i<<" "<<kmp(a,s[j])<<" "<<kmp(b,s[j])<<endl; ans[i] = min(ans[i],max(kmp(a,s[j]),kmp(b,s[j]))); } // cout<<ans[i]<<endl; a = jianyi(a); b = jianyi(b); } int ant = 0; for(int i = 0;i<s[mini].length();i++){ //cout<<ans[i]; ant = max(ant,ans[i]); } cout<<ant<<endl; } return 0; }
poj 1002
企业喜欢用容易被记住的电话号码。让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语。例如,你需要给滑铁卢大学打电话时,可以拨打TUT-GLOP。有时,只将电话号码中部分数字拼写成单词。当你晚上回到酒店,可以通过拨打310-GINO来向Gino's订一份pizza。让电话号码容易被记住的另一个办法是以一种好记的方式对号码的数字进行分组。通过拨打必胜客的“三个十”号码3-10-10-10,你可以从他们那里订pizza。 电话号码的标准格式是七位十进制数,并在第三、第四位数字之间有一个连接符。电话拨号盘提供了从字母到数字的映射,映射关系如下: A, B, 和C 映射到 2 D, E, 和F 映射到 3 G, H, 和I 映射到 4 J, K, 和L 映射到 5 M, N, 和O 映射到 6 P, R, 和S 映射到 7 T, U, 和V 映射到 8 W, X, 和Y 映射到 9 Q和Z没有映射到任何数字,连字符不需要拨号,可以任意添加和删除。 TUT-GLOP的标准格式是888-4567,310-GINO的标准格式是310-4466,3-10-10-10的标准格式是310-1010。 如果两个号码有相同的标准格式,那么他们就是等同的(相同的拨号) 你的公司正在为本地的公司编写一个电话号码薄。作为质量控制的一部分,你想要检查是否有两个和多个公司拥有相同的电话号码。 Input 输入的格式是,第一行是一个正整数,指定电话号码薄中号码的数量(最多100000)。余下的每行是一个电话号码。每个电话号码由数字,大写字母(除了Q和Z)以及连接符组成。每个电话号码中只会刚好有7个数字或者字母。 Output 对于每个出现重复的号码产生一行输出,输出是号码的标准格式紧跟一个空格然后是它的重复次数。如果存在多个重复的号码,则按照号码的字典升序输出。如果输入数据中没有重复的号码,输出一行: No duplicates.
poj1328求大神 题意如下
Input The input consists of several test cases. The first line of each case contains two integers n (1<=n<=1000) and d, where n is the number of islands in the sea and d is the distance of coverage of the radar installation. This is followed by n lines each containing two integers representing the coordinate of the position of each island. Then a blank line follows to separate the cases. The input is terminated by a line containing pair of zeros Output For each test case output one line consisting of the test case number followed by the minimal number of radar installations needed. "-1" installation means no solution for that case. Sample Input 3 2 1 2 -3 1 2 1 1 2 0 2 0 0 Sample Output Case 1: 2 Case 2: 1 题意:假设海岸线是一条无限延伸的直线。陆地在海岸线的一侧,而海洋在另一侧。每一个小的岛屿是海洋上的一个点。雷达坐落于海岸线上,只能覆盖d距离,所以如果小岛能够被覆盖到的话,它们之间的距离最多为d。 题目要求计算出能够覆盖给出的所有岛屿的最少雷达数目。 ``` #include <algorithm> #include <vector> #include <limits> #include <string> using namespace std; double d; int n; int t=0; bool flag = false; vector <int> ans; struct data { public: double start; double ends; }; bool compare(data a,data b) { return a.ends<b.ends; } int main() { while(cin>>n>>d&&(n!=0&&d!=0)) { vector <data> ils (n); int x,y,i; i=0; while(i!=n&&cin>>x>>y) { if(y>d) { flag = true; } data item; item.start = x - sqrt(d*d-y*y); item.ends = x + sqrt(d*d-y*y); ils[i] = item; ++i; } sort(ils.begin(),ils.end(),compare); i=0; int num = 0; double range; while(i<n) { range = ils[i].ends; while(++i<n) { if(ils[i].start>range) break; } ++num; } if(flag) { ans.push_back(-1); } else { ans.push_back(num); } n=d=i=num=0; ils.clear(); flag = false; } for(t=0;t!=ans.size();t++) { cout<<"case "<<t+1<<": "<<ans[t]<<endl; } return 0; } ```
ACM一道题 poj3523 UVA1601双向广度优先BFS
我没有用双广,用的是紫书上说的把空格提出来重新建了一张图,调试了两天,实在找不出bug,第二组测试数据总是38而不是36。。。 哪位大神做过了这道题,跪求帮助啊!! 链接:http://poj.org/problem?id=3523
poj 1042 WRONG ANSWER
最近才开始做acm 不知道在什么情况下才能通过编译器 感觉没问题的程序不是超时就是别的问题 这道题题目的例子都试过了 不知道错在哪 求助 #include <iostream> #include <stdio.h> #include <string.h> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { int n; while(cin>>n&&n!=0){ int hour; int fi[30]; int di[30]; int ti[30]; int timid[30]; cin>>hour; int max; for(int i=0;i<n;i++) cin>>fi[i]; for(int i=0;i<n;i++) cin>>di[i]; for(int i=0;i<n-1;i++) cin>>ti[i]; int maxfish=0; int lakenum=0; int sum=0; int time=1; // fimid初始化 hour*=12; int hourmid=hour; int summid=0; int timemid[30]; int timemid2[30]; int fimid[30]; for(int i=0;i<n;i++) { memcpy(&fimid,&fi,sizeof(fi)); memset(&timemid,0,sizeof(timemid)); for(int j=0;j<i;j++) { hour-=ti[j]; } while(hour>0){ for(int j=0;j<i+1;j++) //枚举 为了排除路上时间带来的干扰,为贪心创下条件 { if(fimid[j]>maxfish) { maxfish=fimid[j]; lakenum=j; } } if (maxfish==0) {timemid[0]+=hour; hour=0; } else{ timemid[lakenum]++; sum+=maxfish; fimid[lakenum]-=di[lakenum]; if(fimid[lakenum]<0) fimid[lakenum]=0; hour-=time; maxfish=0; } } hour=hourmid; if(sum>summid) { summid=sum; for(int j=0;j<n;j++) { timemid2[j]=timemid[j]; } } sum=0; } for(int j=0;j<n;j++) { if(j!=0) cout<<", "; cout<<5*timemid2[j]; } cout<<endl; cout<<"Number of fish expected: "<<summid<<endl; } return 0; }
POJ 1002 自测没问题 提交总是wrong answer
#include <stdio.h> #include <stdlib.h> #include <string.h> #define type int char transfer[26]={2,2,2, 3,3,3, 4,4,4, 5,5,5, 6,6,6, 7,7,7,7, 8,8,8, 9,9,9,9}; typedef struct repeat { char num[8]; struct repeat * next; }RPT; void std(char * in,char *out) { int i,j=0; char c; out[7]=0; for(i=0;i<7;i++) { while(in[j]=='-')j++; c=in[j++]; if(c>=65) { out[i]=transfer[c-65]; } else { out[i]=c-48; } } return; } int strcasecmp(char * s1,char *s2) { int i=0; while(s1[i]) { if(s1[i]>s2[i])return 1; else if(s1[i]<s2[i]) return -1; i++; } if(s2[i]==0)return 0; else return -1; } int main(void) { RPT * rhead; short intbytes; type *******head=NULL;//相当于trie树的东西 type * p; RPT *rp,*tmprp,*tmprp1; int n,i,j,count; char unstd[20]; char stdn[9]; intbytes=sizeof(type)*10; head=(type*******)malloc(intbytes); memset((void*)head,0,intbytes); rp=rhead=(RPT*)malloc(sizeof(RPT)); rp->num[0]=0; rp->next=NULL; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s",unstd); std(unstd,stdn); //1234567出现的次数存放在head[1][2][3][4][5][6][7]里面 p=(type*)head; for(j=0;j<6;j++) { if(0==p[stdn[j]]) { p[stdn[j]]=(type)malloc(intbytes); memset((void*)p[stdn[j]],0,intbytes); } p=(type*)p[stdn[j]]; } count=++p[stdn[6]]; //如果count==2,则需要在repeat裢表中创建一个结点 if(count==2) { rp=(RPT*)malloc(sizeof(RPT)); memcpy(rp->num,stdn,8); //将rp结点按字典顺序插入repeat裢表中 tmprp1=rhead; tmprp=rhead->next; while(tmprp) { if(strcasecmp(rp->num,tmprp->num)>0) { tmprp1=tmprp; tmprp=tmprp->next; } else { break; } } rp->next=tmprp1->next; tmprp1->next=rp; } } rp=rhead->next; if(rp==NULL) { printf("No duplicates.\n"); } else { while(rp) { memcpy(stdn,rp->num,8); printf("%d%d%d-%d%d%d%d %d\n",rp->num[0],rp->num[1],rp->num[2],rp->num[3],rp->num[4],rp->num[5],rp->num[6],head[stdn[0]][stdn[1]][stdn[2]][stdn[3]][stdn[4]][stdn[5]][stdn[6]]); rp=rp->next; } } return 0; }
POJ 1001 总是提示答案错误
#include <iostream> #include <stdio.h> #include <cstring> #include <string> using namespace std; const int MAX = 500; char a[MAX]; char b[MAX]; char temp[MAX]; char result[MAX]; char str[8]="98.999"; int n = 10,point; bool pointEmpty(){ int i; for(i=0; i<strlen(str); i++) if(str[i] == '.') return true; return false; } void init(){ int i,j; memset(a,0,MAX*sizeof(char)); memset(b,0,MAX*sizeof(char)); memset(result,0,MAX*sizeof(char)); memset(temp,0,MAX*sizeof(char)); if(pointEmpty()) for(i=strlen(str)-1; str[i]=='0'; i--) str[i] = '\0'; for(i=strlen(str)-1,j=0; i>=0; i--){ if(str[i]!='.'){ b[j] = str[i]; a[j++] = str[i]; }else{ point = strlen(str) - i - 1; } } point = point*n; } void fun(){ int i,j,h,k,v,z,x,y; if(n==1) { strcpy(result, a); return ; } if(n==0){ strcpy(result, "1"); return ; } while(--n){ for(i=0; i<strlen(a); i++){ z=0; h=0; for(j=0; j<strlen(b); j++){ z = (a[i]-48) * (b[j]-48) + z; v = z%10; z = z/10; temp[h++] = v+48; } if(z!=0) temp[h++] = z+48; temp[h] = '\0'; h=0;z=0; for(k=i; k<j || h<strlen(temp); h++,k++){ if(i==0){ result[k] = temp[h]; }else{ if(result[k] == 0) x=0; else x = result[k]-48; if(temp[h] == 0) y=0; else y = temp[h]-48; z = x + y + z; v = z%10; z = z/10; result[k] = v+48; } } if(z!=0) result[k++] = z+48; result[k] = '\0'; } strcpy(b, result); } } void solve(){ int count,i,j,k; char ch; init(); fun(); strcpy(temp, result); for(i=0,j=0; i<strlen(result); i++){ if(point == i && point!=0){ result[j++] = '.'; } result[j++] = temp[i]; } k = strlen(result); for(i=k-1; i>=k/2; i--){ ch = result[i]; result[i] = result[k-i-1]; result[k-i-1] = ch; } printf("%s\n",result); } int main() { while(cin>>str>>n){ solve(); } return 0; }
求POJ1011stick时间0MS的C++代码
最好有注释且易懂,标明剪枝的地方。字数不够句号来凑。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
poj 1328贪心算法,一直WA
根据网上的思路写了下代码,测试了几个用例都没问题,哪个大神帮忙看下哪里有问题啊。。。 题意:假设海岸线是一条无限延伸的直线。陆地在海岸线的一侧,而海洋在另一侧。每一个小的岛屿是海洋上的一个点。雷达坐落于海岸线上,只能覆盖d距离,所以如果小岛能够被覆盖到的话,它们之间的距离最多为d。 题目要求计算出能够覆盖给出的所有岛屿的最少雷达数目 ``` #include<iostream> #include<queue> #include<math.h> #include<algorithm> using namespace std; struct dot { int x; int y; }abc[10000]; float left(dot a,int r) { return a.x - sqrt(r*r*1.0 - a.y*a.y*1.0); } float right(dot a, int r) { return a.x + sqrt(r*r*1.0 - a.y*a.y*1.0); } int comp(const void* a, const void* b) { int aa = (*(dot*)a).x; int bb = (*(dot*)b).x; return aa - bb; } int main() { int num, r; cin >> num >> r; bool flag = false; int count = 0; int ans[1000]; memset(ans, 0, sizeof(ans)); while (num != 0 && r != 0) { count++; int cir = 0; for (int i = 0; i < num; i++) { dot temp; cin >> temp.x >> temp.y; if (temp.y > r||temp.y<0) flag = true; abc[i] = temp; } if (flag) { ans[count] = -1; cout << "Case " << count << ": " << -1 << endl; } else { qsort(abc, num, sizeof(abc[0]), comp); dot temp = abc[0]; cir++; float now = right(temp, r); for (int i = 1; i < num; i++) { temp = abc[i]; if (now >= left(temp, r)) continue; else { now = right(temp, r); cir++; } } ans[count] = cir; cout << "Case " << count << ": " << cir << endl; } cin >> num >> r; } return 0; } ```
POJ 1028 一直Wrong answer....求助
题目在http://poj.org/problem?id=1028 我的代码如下: #include <iostream> #include <string> #include <vector> using namespace std; int main() { unsigned current; string userCommand; vector<string> webs; webs.push_back("http://www.acm.org/"); while(getline(cin, userCommand)) { if(userCommand.find("VISIT ") == 0) { webs.push_back(userCommand.substr(6)); current = webs.size() - 1; cout << webs[current] << endl; } else if(userCommand == "BACK") { if(current == 0) cout << "Ignored" << endl; else cout << webs[--current] << endl; } else if(userCommand == "FORWARD") { if(current == webs.size() - 1) cout << "Ignored" << endl; else cout << webs[++current] << endl; } else if(userCommand == "QUIT") break; } return 0; } 求大神们帮我看看好不。。。。非常感谢
poj1598 测试数据通过但是wrong answer 求高手指点
[1598 poj](http://poj.org/problem?id=1598 "") ``` #include <iostream> #include <fstream> #include <vector> #include <string> #include <algorithm> using namespace std; struct Excuse{ string s; int n; }; bool com(Excuse a,Excuse b){ return a.n > b.n; } int main(){ ifstream cin("aaa.txt"); vector<string> vk; vector<Excuse>vs; int n, m; string sk; string s,ss; int knum; Excuse e; int line = 1; while (cin >> n >> m){ vs.clear(); vk.clear(); //if (line != 1)cout << endl; for (int i= 0; i < n; i++){ cin >> sk; vk.push_back(sk); } getline(cin, ss); for (int j = 0; j < m; j++){ getline(cin, ss); s = ss; //大写字母变小写 for (int k = 0; k < s.size(); k++){ if (s[k] >= 'A'&&s[k] <= 'Z')s[k] = s[k] + 32; } knum = 0; //扫描关键子 for (int i = 0; i < vk.size(); i++){ int kn = vk[i].size(); for (int p = 0; p < s.size() - kn +1 ; p++){ //截取一个子串 string st = ""; for (int k = p; k < p + kn; k++){ st = st + s[k]; } //关键字在句首,且关键字后一字符不是字母; if (p == 0 && st == vk[i] && isalpha(s[p + kn])){ knum++; } //关键字在居中,且前后字符不是字母 else if (st == vk[i] && !isalpha(s[p + kn]) && !isalpha(s[p - 1]))knum++; } } e.s = ss; e.n = knum; vs.push_back(e); } sort(vs.begin(), vs.end(), com); cout << "Excute Set #" << line << endl; line++; for (int i = 0; i < vs.size(); i++){ if (i != 0 &&vs[i].n < vs[i - 1].n)break; //else if (i != 0 && vs[i].s == vs[i - 1].s)continue; cout << vs[i].s << endl; } cout << endl; } system("pause"); } ```
求大神看看这两个代码差别在哪里,运行结果不同啊 poj1014
错误代码及运行结果 ``` #include <iostream> #include <cstdio> #include <cstring> using namespace std; int t=0,i,v; int n[7]; int dp[60001]; bool flag =false; int imax(int a,int b) { return (a>b?a:b); } void comepletepack(int cost,int weight) { for(i=cost;i<=v;++i) { dp[i]=imax(dp[i],dp[i-cost]+weight); if(dp[i]==v) { flag =true; return; } } } void onezeropack(int cost,int weight) { for(i=v;i>=cost;--i) { dp[i]=imax(dp[i],dp[i-cost]+weight); if(dp[i]==v) { flag =true; return; } } return; } void mutipack(int cost,int weight,int amount) { if(cost*amount>=v) { comepletepack(cost,weight); return; } if(flag) return; int k=1; while(k<amount) { onezeropack(k*cost,k*weight); if(flag) return; amount-=k; k*=2; } onezeropack(amount*cost,amount*weight); } int main() { int sum; while(scanf("%d %d %d %d %d %d",&n[1],&n[2],&n[3],&n[4],&n[5],&n[6])) { ++t; sum =n[1]+2*n[2]+3*n[3]+4*n[4]+5*n[5]+6*n[6]; if(sum==0) break; if(sum%2!=0) { cout<<"Collection #"<<t<<':'<<endl; cout<<"Can't be divided."<<endl; cout<<endl; continue; } v=sum/2; memset(dp,-1,sizeof(dp)); dp[0]=0; flag =false; for(i=1;i<=6;++i) { mutipack(i,i,n[i]); if(flag) break; } if(!flag) { cout<<"Collection #"<<t<<':'<<endl; cout<<"Can't be divided."<<endl; cout<<endl; } else { cout<<"Collection #"<<t<<':'<<endl; cout<<"Can be divided."<<endl; cout<<endl; } } return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201603/20/1458480360_817847.png) 正确代码及其运行结果 ``` #include<iostream> #include <cstring> using namespace std; int n[7]; //价值为i的物品的个数 int v; //背包容量 int SumValue; //物品总价值 bool flag; //标记是否能平分SumValue int dp[100000]; //状态数组 int max(int a,int b) { return a>b?a:b; } /*完全背包*/ void CompletePack(int cost,int weight) { for(int i=cost;i<=v;i++) { dp[i]=max(dp[i],dp[i-cost]+weight); if(dp[i]==v) //剪枝,当能够平分SumValue时退出 { flag=true; return; } } return; } /*01背包*/ void ZeroOnePack(int cost,int weight) { for(int i=v;i>=cost;i--) { dp[i]=max(dp[i],dp[i-cost]+weight); if(dp[i]==v) //剪枝 { flag=true; return; } } return; } /*多重背包*/ void MultiplePack(int cost,int weight,int amount) { if(cost*amount>=v) { CompletePack(cost,weight); return; } if(flag) //剪枝 return; /*二进制优化*/ int k=1; while(k<amount) { ZeroOnePack(k*cost,k*weight); if(flag) //剪枝 return; amount-=k; k*=2; } ZeroOnePack(amount*cost,amount*weight); return; } int main(int i) { int test=1; while(cin>>n[1]>>n[2]>>n[3]>>n[4]>>n[5]>>n[6]) { SumValue=0; //物品总价值 for(i=1;i<=6;i++) SumValue+=i*n[i]; if(SumValue==0) break; if(SumValue%2) //sum为奇数,无法平分 { cout<<"Collection #"<<test++<<':'<<endl; cout<<"Can't be divided."<<endl<<endl; //注意有空行 continue; } v=SumValue/2; memset(dp,-1,sizeof(dp)); dp[0]=0; flag=false; for(i=1;i<=6;i++) { MultiplePack(i,i,n[i]); if(flag) //剪枝 break; } if(flag) { cout<<"Collection #"<<test++<<':'<<endl; cout<<"Can be divided."<<endl<<endl; continue; } else { cout<<"Collection #"<<test++<<':'<<endl; cout<<"Can't be divided."<<endl<<endl; continue; } } return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201603/20/1458480486_97614.png) 求大神看看错的错在哪里了
POJ 1003总是出错 我在我的vs上是没有问题的
#include“stdio.h” int main(){ while(1){ float sum=0.5,num; int card=2; scanf("%f",&num); if(num==0.00){ break; }else if(num>=5.20){ continue; } else if(num<=0.5) printf("1 Card(s)\n"); else if(num>sum){ while(num>sum){ card++; sum+=(float)1/card; } printf("%d Card(s)\n",card-1); } } return 0; }
poj 1328 Running time 错误 求助
#include<iostream> using namespace std; #include<math.h> void sort_com(int dot[][2],int num)//对小岛根据x坐标排序 { int judge=1; while(judge) { judge=0; for(int i=0;i<num-1;i++) { if(dot[i][0]>dot[i+1][0]) { int temp1=dot[i][0]; int temp2=dot[i][1]; dot[i][0]=dot[i+1][0]; dot[i][1]=dot[i+1][1]; dot[i+1][0]=temp1; dot[i+1][1]=temp2; judge=1; } } } } float range(int y,int d) //求一个岛在海岸线上所允许的圆心值范围,-1表示不存在 { if(d*d-y*y<0) return -1; return sqrt((float)(d*d-y*y)); } int select_dot(int dot[][2],int d,int num)//寻找区间最少数 { int b[100][2]; for(int i=0;i<num;i++) { float delt=range(dot[i][1],d); if(delt<0) return -1; b[i][0]=dot[i][0]-delt; b[i][1]=dot[i][0]+delt; } int center=b[0][1]; int result=1; for(int i=0;i<num;i++) { if(b[i][0]>center) { center=b[i][1]; result++;//需要增加一个雷达 } } return result; } int main(void) { int dot[100][2],d,num,times=0;//times表示有几个case int answer[100]; for(int i=0;i<100;i++)//初始化 for(int j=0;j<2;j++) dot[i][j]=0; cin>>num>>d; while(d!=0||num!=0) { for(int i=0;i<num;i++) cin>>dot[i][0]>>dot[i][1]; sort_com(dot,num); answer[times]=select_dot(dot,d,num); times++; cin>>num>>d; } for(int i=1;i<=times;i++) cout<<"Case "<<i<<": "<<answer[i-1]<<endl;//输出 return 0; } poj 显示Running time 的错误过不了,求助
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱  极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件,   选择安装到U盘(按照操作无需更改) 三、重启进入pe系统   1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12)     选择需要启
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案 去年我去爱卡汽车面试PHP,一轮和二轮面的都不错,在三轮面到Nginx的时候很多问题当时不知道怎么回答,确实没有深入学习过,花了一段时间的学习,终于能解答Nginx高性能优化的问题了,10月24号为了获得程序员勋章,发布了半个优化笔记,浏览到了1000+,受到这个鼓舞,我抽时间在仔细整理下关于Nginx性能优化的问题,我们从软件说起。...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
化繁为简 - 腾讯计费高一致TDXA的实践之路
导语:腾讯计费是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台,在如此庞大的业务体量下,腾讯计费要支撑业务的快速增长,同时还要保证每笔交易不错账。采用最终一致性或离线补...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
Java学习笔记(七十二)—— Cookie
概述 会话技术: 会话:一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器发送资源请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cookie,把数据存储到客户端 服务器端会话技术:Session,把数据存储到服务器端 Cookie 概念:客户端会话技术,将数据存储到客户端 快速入门: 使用步骤: 创建C
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
强烈推荐10本程序员在家读的书
很遗憾,这个鼠年春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 显示当前目录 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mk
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,对于用户的信息、相关业务的内容,通常都需要对其进行存储,而不是像第2章节中那样,把用户信息存储在内存中(重启就丢了!)。 对于信息的存储,现在已经有非常非常多...
基于Python的人脸自动戴口罩系统
目录 1、项目背景 2、页面设计 3、器官识别 4、退出系统 1、项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩、酒精、消毒液奇货可居。 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的Landmark人脸68个关键点检测库轻松识别出人脸五官
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问