赞
踩
- #include <iostream>
- using namespace std;
- int reversenum(int x)
- {
- int a=0;
- while (x>0) {
- a=a*10+x%10;
- x/=10;
- }
- return a;
- }
- int reverseAdd(int a,int b)
- {
- if(a<1||a>70000||b<1||b>70000){
- return -1;
- }
- int num1=reversenum(a);
- int num2=reversenum(b);
- int sum=num1+num2;
- return sum;
- }
-
- int main()
- {
- int x;
- int y;
- cin>>x>>y;
- int sum=reverseAdd(x,y);
- cout<<sum;
- return 0;
- }
- #include <iostream>
- #include <vector>
- using namespace std;
- const int inf= 0x7f7f7f7f;
- //时间花费矩阵
- int a[][7]={
- {0},
- {0, 0, 2, 10, 5, 3, -1},
- {0, -1, 0, 12, -1, -1, 10},
- {0, -1, -1, 0, -1, 7, -1},
- {0, 2, -1, -1, 0, 2, -1},
- {0, 4, -1, -1, 1, 0, -1},
- {0, 3, -1, 1, 0, 2, 0}
- };
- int x,y;//目的地,大雾城市
- int res;
- int used[10];//record falg
- int d[50];//记录路
- int haveded[50];//走过的路
- int anscost=inf;
- int anspath;
- /*====出发地,花费时间,路径个数=====*/
- void dfs(int now,int cost,int path)
- {
- if(now==x){
- if(cost<anscost){
- anscost=cost;
- for(int i=0;i<path;i++){
- haveded[i]=d[i];
- }
- anspath=path;
- }
- return;
- }
- for(int i=1;i<=6;i++){
- if(i==y){
- continue;
- }
- if(used[i]==0&&a[now][i]>=0){
- used[i]=1;
- d[path]=i;
- dfs(i,cost+a[now][i],path+1);
- used[i]=0;
- }
- }
- }
- int main()
- {
- static char emp[] = "";
- static char col[] = ", ";
- cin>>x>>y;//出差城市,大雾城市
-
- if (x == 5)
- {
- cout<<"0\n[]\n";
- return 0;//出差为5的话,0不可达
- }
- if (y == 5)
- {
- cout<<"1000\n[]\n";
- return 0;//大雾为5的话,1000不可达
- }
-
- d[0] = 5;
- used[5] = 1;
-
- dfs(5, 0, 1);//核心算法
-
- char *p = emp;
- if (anscost == inf)
- {
- printf("1000\n[]\n");
- }
- else
- {
- cout<<anscost<<"\n[";
- for (int i = 0; i < anspath; i++)
- {
- cout<<p<<haveded[i];
- p = col;
- }
- printf("]\n");
- }
- return 0;
- }
请设计一个算法完成两个超长正整数的加法。
输入两个字符串数字
- #include<iostream>
- #include <string>
- #include <algorithm>
- using namespace std;
-
- int main()
- {
- string a;
- string b;
- cin>>a>>b;
- int n1=a.size();
- int n2=b.size();
- string x,y;
- for(int i=0;i<n1;i++){
- x[i]=a[n1-1-i];
- }
- for(int i=0;i<n2;i++){
- y[i]=b[n2-1-i];
- }
-
- if(n1<n2){
- for(int i=n1;i<n2;i++){
- x[i]='0';
- }
-
- }else{
- for(int i=n2;i<n1;i++){
- y[i]='0';
- }
- }
- int sum[100];
- int carry=0;
- int n=max(n1,n2);
- for(int i=0;i<n;i++){
- int c=x[i]-48+y[i]-48+carry;
- if(c<10){
- sum[i]=c;
- carry=0;
- }else{
- sum[i]=c-10;
- carry=1;
- }
- }
- if(carry==1){
- sum[n]=1;
- n=n+1;
- }
- // for(int j=0;j<n;j++)
- // cout<<sum[n-1-j];
- // cout<<endl;
- string res[100];
- for(int j=0;j<n;j++){
- res[j]=sum[n-1-j]+'0';
-
- }
- for(int j=0;j<n;j++){
- cout<<res[j];
- }
- cout<<endl;
- return 0;
- }
4.
输入一个字符串。
输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度
示例1
abcd12345ed125ss123058789
123058789,9
- #include<iostream>
- #include<string>
- #include<vector>
- using namespace std;
-
- int main()
- {
- string str;
-
- while(cin>>str)
- {
- string tmp;
- vector<string> arr;
-
- for(int i=0;i<=str.length();i++)
- {
- if(str[i]>='0' && str[i]<='9')
- {
- tmp+=str[i];
- }
- else
- {
- if(tmp.length()!=0)
- {
- arr.push_back(tmp);
- }
- tmp.clear();
- }
- }
-
- int max=0;
- int length=0;
-
- for(int i=0;i<arr.size();i++)
- {
- if(max<(arr[i]).length())
- {
- max=(arr[i]).length();
- length=max;
- }
- }
-
- for(int i=0;i<arr.size();i++)
- {
- if(max==(arr[i]).length())
- {
- cout<<arr[i]<<" ";
- }
-
- }
- cout<<","<<length<<endl;
- }
- return 0;
- }
- int countInnums(int iNum){
- int iCount=0;
- iNum=abs(iNum);
- while(iNum){
- iCount++;
- iNum=iNum&(iNum-1);
- }
- return iCount;
- }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。