poj 1002

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

Output

No duplicates.

1个回答

poj上总是答案错误题号是1002 487-3279

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; } ```

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; }

RT 链接： [点击打开](http://poj.org/problem?id=3309 "")

poj 1363 线上指导+源代码

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

POJ2127 编程问题求解

poj的1002题 ``` #include<iostream> #include<string> #include<string.h> #include<map> #include<iomanip> using namespace std; typedef char S[111]; map<int,int>M; int main(){ int n,l,i,t; S num; while(cin>>n){ M.clear(); while(n--){ cin>>num; l=strlen(num); t=0; for(i=0;i<l;++i){ switch(num[i]){ case'-':continue; case'A':case'B':case'C':t=t*10+2;break; case'D':case'E':case'F':t=t*10+3;break; case'G':case'H':case'I':t=t*10+4;break; case'J':case'K':case'L':t=t*10+5;break; case'M':case'N':case'O':t=t*10+6;break; case'P':case'R':case'S':t=t*10+7;break; case'T':case'U':case'V':t=t*10+8;break; case'W':case'X':case'Y':t=t*10+9;break; default:t=t*10+(num[i]-'0'); } } if(M.find(t)==M.end()){ M.insert(map<int,int>::value_type(t,1)); } else ++M[t]; } bool find=false; for(map<int,int>::iterator it=M.begin();it!=M.end();++it) { if(it->second>1){ find=true; //这里是我写的cout的输出，为什么不能再poj中ac呢，下面注释掉的printf方法可以ac cout<<fixed<<setprecision(3)<<it->first/10000<<"-"<<fixed<<setprecision(4)<<it->first%10000<<" "<<it->second<<endl; //printf("%03d-%04d %d\n",it->first / 10000,it->first % 10000,it->second); } } if(!find){ puts("No duplicates."); } } return 0; } ```

poj2488 样例过了为什么还是WA？？？有人帮忙看一下吗？

```.c poj2488 样例过了为什么还是WA？？？ ``` 有人帮忙看一下吗？ ```.c #include <stdio.h> #include <stdlib.h> #define max 30 struct pos { int x; int y; int flag; }map[max][max],res[max]; int n,m,num,cnt=1; int l=1; int dx[9]={-2,-2,-1,-1,1,1,2,2}; int dy[9]={-1,1,-2,2,-2,2,-1,1}; void dfs(int x, int y) { if(l==0) return; int i,nx,ny,flag=0; for(i=0; i<9; i++) { nx=x+dx[i]; ny=y+dy[i]; if(nx<=n && nx>=1 && ny<=m && ny>=1 && map[nx][ny].flag==1 )//&&(dy[i]==1||dy[i]==-2))//保证字典序 { flag=1; cnt++; map[nx][ny].flag=0; res[cnt].x=nx; res[cnt].y=ny; dfs(nx,ny); cnt--; map[nx][ny].flag=1; } } //if(flag==0)//无路可走 //{ if(cnt==n*m) { l=0; printf("Scenario #%d:\n",3-num); for(i=1; i<=n*m; i++) { printf("%c%d",'A'+res[i].y-1,res[i].x); } printf("\n"); if(num!=0) printf("\n"); } return; //} } int main() { int i,j; scanf("%d",&num); while(num--) { scanf("%d %d",&n,&m); l=1; res[cnt].x=1,res[cnt].y=1; for(i=1; i<=n; i++) { for(j=1; j<=m; j++) { map[i][j].flag=1; //map[i][j].x=i; } } map[1][1].flag=0; dfs(1,1); if(l==1)//impossible { printf("Scenario #%d:\n",3-num); printf("impossible\n"); if(num!=0) printf("\n"); } } return 0; } ```

poj2159求助 关于字符串的输入问题

POJ3591 :Ants and Aphides

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 的错误过不了，求助

poj1146问题 实在是不会了

#include <iostream> #include <math.h> using namespace std; int round(double sum, int num) { if(sum>0) return (int)(sum/num + 0.5); else if(sum == 0) return 0; else return (int)(sum/num - 0.5); } bool isexit(int* x, int y, int num) { for(int i=0; i<num; i++) { if(x[i] == y) return true; } return false; } int main() { int num, i=0, var; int *x; int *y; double sum = 0; cin>>num; x = (int *) malloc(num * sizeof(int)); y = (int *) malloc(num * sizeof(int)); while(i<num) { cin>>x[i]>>y[i]; sum += y[i++]; } var = round(sum, num); sum = 0; for(i=0; i<num; i++) { sum += abs(y[i] - var); } int xmove, ymove; for(i=0; i<num; i++) { for(int j=0; j<num&&j!=i ;j++) if(x[j]==x[i]) { xmove = x[j]-1; while(isexit(x, xmove, num)) { --xmove; } ymove = x[j]+1; while(isexit(x, ymove, num)) { ++ymove; } if(x[j] - xmove > ymove - x[j]) { sum += abs(ymove - x[j]); x[j] = ymove; } else { sum += abs(x[j] - xmove); x[j] = xmove; } } } cout<<sum<<endl; free(x); free(y); return 0; }

poj 2058算法题Word Encoding完整代码

MySQL数据库面试题（2020最新版）

HashMap底层实现原理，红黑树，B+树，B树的结构原理 Spring的AOP和IOC是什么？它们常见的使用场景有哪些？Spring事务，事务的属性，传播行为，数据库隔离级别 Spring和SpringMVC，MyBatis以及SpringBoot的注解分别有哪些？SpringMVC的工作原理，SpringBoot框架的优点，MyBatis框架的优点 SpringCould组件有哪些，他们...

Python爬虫，高清美图我全都要（彼岸桌面壁纸）

6年开发经验女程序员，面试京东Java岗要求薪资28K

Java岗开发3年，公司临时抽查算法，离职后这几题我记一辈子