zoukankan      html  css  js  c++  java
  • 痛苦的数据结构OJ

    感觉这篇博客写完,会方便更多同学。。。。
    有些题目真的,很难啊,最后的几道题目,我也是谷歌的!做到吐血。

    A - B Problem II

    oj

    这是个大数相加的问题,即高精度加法
    贴一发高精度模板总结

    	#include<iostream>
    	#include<cstring>
    	#include<algorithm>
    	using namespace std;
    	const int L=110;
    	string sub(string a,string b)
    	{
    	    string ans;
    	    int na[L]={0},nb[L]={0};
    	    int la=a.size(),lb=b.size();
    	    for(int i=0;i<la;i++) na[la-1-i]=a[i]-'0';
    	    for(int i=0;i<lb;i++) nb[lb-1-i]=b[i]-'0';
    	    int lmax=la>lb?la:lb;
    	    for(int i=0;i<lmax;i++)
    	    {
    	        na[i]-=nb[i];
    	        if(na[i]<0) na[i]+=10,na[i+1]--;
    	    }
    	    while(!na[--lmax]&&lmax>0)  ;lmax++;
    	    for(int i=lmax-1;i>=0;i--) ans+=na[i]+'0';
    	    return ans;
    	}
    	int main()
    	{
    	    string a,b;
    	    while(cin>>a>>b) cout<<sub(a,b)<<endl;
    	    return 0;
    	}
    

    陶陶摘苹果

    oj

    这个就注意一下,多组数据测试就行了,没打过ACM的可能会出错while(cin>>a[0])

    	# include <iostream>
    	using namespace std;
    	int main(){
    		int a[10],h;
    		while(cin>>a[0]){
    		int sum=0;
    		for(int i=1;i<10;i++)
    		cin>>a[i];
    		cin>>h;
    		for(int i=0;i<10;i++){
    			if(h+30>=a[i])
    			sum++;
    		}
    		cout<<sum<<endl;
    	    }
    	    return 0;
    	} 
    

    校门外的树

    oj

    这道题是参考洛洛师傅的,其中把要移走的树值赋为-1,然后计算值为-1的数目
    个人感觉这个思想很好。。。。

    	#include <iostream>
    	using namespace std;
    	int main(){
    		int L,M,a,b,i,move,j;
    		while(cin>>L>>M)
    		{
    			int s[10001]={0};
    			while(M--){
    				cin>>a>>b;
    				for(i=a;i<=b;i++)
    					s[i]=-1;
    			}
    			move=0;
    			for(j=0;j<=L;j++){
    				if(s[j]==-1)
    					move+=1;
    			}
    			cout<<L-move+1<<endl;
    		}
    		return 0;
    	}
    

    自动加密

    oj

    这道题就是注意大小写都要写,然后字符对照ASCII,转换一下就行了

    	#include <iostream>
    	using namespace std;
    	int main(){
    		int i;
    		char s[100];
    		cin>>s;
    		for(i=0;s[i];i++)
    		{
    			if(s[i]>='a'&&s[i]<='z')
    			{
    				s[i]+=5;
    				if(s[i]>'z')
    				{
    					s[i]-=26;
    				}
    			}
    			else if(s[i]>='A'&&s[i]<='Z'){
    				s[i]+=5;
    				if(s[i]>'Z')
    				{
    					s[i]-=26;
    				}
    			}
    		}
    		cout<<s<<endl;
    		return 0;
    	}
    

    计算秒数

    oj

    这个和上一道题思路差不多,字符转数字

    	#include <iostream>
    	using namespace std;
    	int sum(char x,char y,int z){
    		int result;
    		if(x=='0'){
    			result=(y-48)*z;
    		}
    		else{
    			result=((x-48)*10+y-48)*z;
    		}
    		return result;
    	}
    	int main(){
    		int i,n,h,m,s;
    		char t[10];
    		while(cin>>n)
    		{
    			for(i=0;i<n;i++){
    				cin>>t;
    				h=sum(t[0],t[1],3600);
    				m=sum(t[3],t[4],60);
    				s=sum(t[6],t[7],1);
    				cout<<h+m+s<<endl;
    			}
    		}
    		return 0;
    	}
    

    算法2-1:集合union

    oj

    这道题给出了合并函数,补充表头,和定义类就行了,注意输出n+2

    	#include<iostream>
    	using namespace std;
    	typedef struct List{
    		int L[205];
    		int length;
    	}List;
    	List La,Lb;
    	bool LocateElem(List &La,int e){
    		for(int i=0;i<La.length;i++){
    			if(La.L[i]==e)
    				return true;
    		}
    		return false;
    	}
    	void show(List &L){
    		cout<<L.L[0];
    		for(int i=1;i<L.length;i++)
    			cout<<" "<<L.L[i];
    		cout<<endl;
    	}
    	void Union(List &La,List &Lb){
    		int e;
    		for(int i=0;i<Lb.length;i++){
    			e=Lb.L[i];
    			if(!LocateElem(La,e)){
    				La.L[La.length]=e;
    				La.length++;			
    			}
    			show(La);
    		}
    	}
    	int main(){
    		int n1,n2,i;
    		while(cin>>n1){ 
    			for(i=0;i<n1;i++)
    				cin>>La.L[i];
    			La.length=n1;
    			cin>>n2;
    			for(int i=0;i<n2;i++)	
    				cin>>Lb.L[i];
    			Lb.length=n2;
    			show(La);
    			show(Lb);
    			Union(La,Lb);
    			cout<<endl;
    		} 
    		return 0;
    	}
    

    算法2-2:有序线性表的有序合并

    oj

    上道题会了,这道题就会了,就是变一下主函数,并且注意空格格式,ACM要求很严格

    	#include<iostream>
    	using namespace std;
    	typedef struct List{
    		int date[200];
    		int length;
    	}List;
    	List La,Lb;
    	void InitList(List &L)  
    	{  
    	    L.length=0;  
    	}
    	int ListLength(List L){  
    	    return L.length;  
    	}
    	int GetElem(List L,int p,int &e){  
    	    if(p<1||p>L.length)  
    	        return 0;  
    	    e=L.date[p];  
    	    return 0;  
    	}
    	int ListInsert(List &L,int p,int e){  
    	    int i;  
    	    if(p<1||p>L.length||L.length==200-1)  
    	        return 0;  
    	    for(i=L.length;i>=p;--i)  
    	        L.date[i+1]=L.date[i];  
    	    L.date[p]=e;  
    	    return 0;  
    	}
    	void MergeList(List La,List Lb,List &Lc){  
    	    int La_len,Lb_len;  
    	    int ai,bj;  
    	    int i=1,j=1,k=0;  
    	    InitList(Lc);  
    	    La_len=ListLength(La);  
    	    Lb_len=ListLength(Lb);  
    	    Lc.length=La.length+Lb.length;  
    	    while((i<=La_len)&&(j<=Lb_len)){  
    	        GetElem(La,i,ai);  
    	        GetElem(Lb,j,bj);  
    	        if(ai<=bj){  
    	            ListInsert(Lc,++k,ai);  
    	            ++i;  
    	        }else{  
    	            ListInsert(Lc,++k,bj);  
    	            ++j;  
    	        }  
    	    }  
    	    while (i<=La_len){  
    	        GetElem(La,i++,ai);  
    	        ListInsert(Lc,++k,ai);  
    	    }  
    	    while(j<=Lb_len){  
    	        GetElem(Lb,j++,bj);  
    	        ListInsert(Lc,++k,bj);  
    	    }     
    	}
    	int main(){
    		List La,Lb,Lc;  
    	    InitList(La);  
    	    InitList(Lb);  
    	    while(cin>>La.length){  
    	        for(int i=1;i<=La.length;i++){  
    	            cin>>La.date[i];  
    	        }  
    	        cin>>Lb.length;  
    	        for(int i=1;i<=Lb.length;i++){  
    	            cin>>Lb.date[i];  
    	        }  
    	        MergeList(La,Lb,Lc);  
    	        if(Lc.length!=0){  
    	            cout<<Lc.date[1];  
    	            for(int i=2;i<=Lc.length;i++)  
    	                cout<<" "<<Lc.date[i];  
    	        }  
    	        cout<<endl;  
    	    }  
    		return 0;
    	}
    

    算法2-3~2-6:Big Bang

    oj

    这是谷歌加修改的。

    	#include<stdio.h>
    	#include<stdlib.h>
    	#include<string.h>
    	#define LIST_INIT_SIZE 100
    	#define LISTINCREMENT 10
    	typedef struct
    	{
    	    char name[100];
    	}ElemType;
    	typedef struct
    	{
    	    ElemType * elem;
    	    int length;
    	    int listsize;
    	}List;
    	int InitList(List &L)
    	{
    	    L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
    	    if(!L.elem)
    	        return 0;
    	    L.length = 0;
    	    L.listsize = LIST_INIT_SIZE;
    	    return 1;
    	}
    	int ListInsert(List &L,int i,ElemType e)
    	{
    	    ElemType *p;
    	    if(i<1||i>L.length+1)
    	        return 0;
    	    if(L.length>=L.listsize)
    	    {
    	        ElemType *newbase;
    	        newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
    	        if(!newbase)
    	        {
    	            return 0;
    	        }
    	        L.elem = newbase;
    	        L.listsize+=LISTINCREMENT;
    	    }
    	    ElemType *q = &(L.elem[i-1]);
    	    for(p = &(L.elem[L.length-1]);p>=q;--p)
    	        *(p+1)=*p;
    	    *q=e;
    	    ++L.length;
    	    return 1;
    	}
    
    	int ListDlete (List &L,int i,ElemType e)
    	{
    	    ElemType *p,*q;
    	    if(i<1||i>L.length)
    	        return 0;
    
    	    p=&(L.elem[i-1]);
    	    e=*p;
    	    q=L.elem+L.length-1;
    	    for(++p;p<=q;++p)
    	    {
    	        *(p-1)=*p;
    	    }
    	    --L.length;
    	    return 1;
    	}
    	int LocateElem(List L,ElemType e,int(*compare)(ElemType,ElemType))
    	{
    	    int i;
    	    ElemType *p;
    	    i=1;
    	    p=L.elem;
    	    while(i<=L.length&&!(*compare)(*p++,e))
    	        ++i;
    	    if(i<=L.length)
    	        return i;
    	    else
    	        return 0;
    	}
    	void listshow(List L)
    	{
    	    int i;
    	    for(i=0;i<L.length;i++)
    	    {
    	        if(i)
    	            putchar(' ');
    	        printf("%s",L.elem[i].name);
    	    }
    	    putchar('
    ');
    	}
    	int cmp(ElemType e1, ElemType e2)
    	{
    	       return (int)!strcmp(e1.name, e2.name);
    	}
    	int main (void)
    	{
    	    char mark[10];
    	    List nameList;
    	    InitList(nameList);
    	    int number;
    	    ElemType e;
    	    while(~scanf("%s",mark))
    	    {
    
    	        if(strcmp(mark,"insert")==0)
    	        {
    	            scanf("%d %s",&number,e.name);
    	            ListInsert(nameList,number,e);
    	        }
    	        else if(strcmp(mark,"show")==0)
    	            listshow(nameList);
    	        else if(strcmp(mark,"delete")==0)
    	        {
    	            scanf("%s",e.name);
    	            number=LocateElem(nameList,e,cmp);
    	            ListDlete(nameList,number,e);
    	        }
    	        else if(strcmp(mark,"search")==0)
    	        {
    	            scanf("%s",e.name);
    	            printf("%d
    ",LocateElem(nameList,e,cmp));
    	        }
    	    }
    	    return 0;
    	}
    

    算法2-8~2-11:链表的基本操作

    oj

    这个也是谷歌加修改的。

    	#include<string.h>  
    	#include<malloc.h>
    	#include<stdio.h>   
    	#include<stdlib.h>
    	#include<math.h>
    	#define TRUE 1  
    	#define FALSE 0  
    	#define OK 1  
    	#define ERROR 0  
    	#define INFEASIBLE -1
    	typedef int Status;  
    	typedef int Boolean;
    	typedef int ElemType;
    	struct LNode  
    	{  
    	    ElemType data;  
    	    struct LNode *next;  
    	};  
    	typedef struct LNode *LinkList;  
    	  
    	Status GetElem(LinkList L,int i,ElemType *e)
    	{ 
    	    int j=1;
    	    LinkList p=L->next;
    	    while(p&&j<i) 
    	    {  
    	        p=p->next;  
    	        j++;  
    	    }  
    	    if(!p||j>i)
    	        return ERROR;  
    	    *e=p->data; 
    	    return OK;  
    	}  
    	  
    	Status ListInsert(LinkList L,int i,ElemType e)
    	{
    	    int j=0;  
    	    LinkList p=L,s;  
    	    while(p&&j<i-1)
    	    {  
    	        p=p->next;  
    	        j++;  
    	    }  
    	    if(!p||j>i-1) 
    	        return ERROR;  
    	    s=(LinkList)malloc(sizeof(struct LNode)); 
    	    s->data=e;
    	    s->next=p->next;  
    	    p->next=s;  
    	    return OK;  
    	}
    	Status ListDelete(LinkList L,int i,ElemType *e) 
    	{
    	    int j=0;  
    	    LinkList p=L,q;  
    	    while(p->next&&j<i-1)  
    	    {  
    	        p=p->next;  
    	        j++;  
    	    }  
    	    if(!p->next||j>i-1)
    	        return ERROR;  
    	    q=p->next;  
    	    p->next=q->next;  
    	    *e=q->data;  
    	    free(q);  
    	    return OK;  
    	}  
    	  
    	void CreateList(LinkList *L,int n)  
    	{
    	    int i;  
    	    LinkList p;  
    	    *L=(LinkList)malloc(sizeof(struct LNode));  
    	    (*L)->next=NULL; 
    	    for(i=n; i>0; --i)  
    	    {  
    	        p=(LinkList)malloc(sizeof(struct LNode)); 
    	        scanf("%d",&p->data);   
    	        p->next=(*L)->next;
    	        (*L)->next=p;  
    	    }  
    	}  
    	  
    	int ShowList(LinkList L)  
    	{  
    	    int numOfList = 0; 
    	    LinkList p = L->next;  
    	    while(p) 
    	    {  
    	        if(numOfList)  
    	        {  
    	            putchar(' ');  
    	        }  
    	        numOfList++; 
    	        printf("%d",p->data); 
    	        p = p->next;  
    	    }  
    	    if(numOfList == 0) 
    	    {  
    	        return 0;  
    	    }  
    	    else  
    	    {  
    	        putchar('
    '); 
    	        return numOfList;
    	    }  
    	}  
    	  
    	int main()  
    	{  
    	    int n; 
    	    int m;  
    	    char strInst[30]; 
    	    int a; 
    	    LinkList L;
    	    int e; 
    	    scanf("%d", &n); 
    	    CreateList(&L, n); 
    	    scanf("%d", &m);  
    	    while(m--)
    	    {  
    	        scanf("%s", strInst);  
    	        if(strcmp(strInst, "get") == 0) 
    	        {  
    	            scanf("%d", &a);  
    	            if(GetElem(L, a, &e) == OK)
    	            {  
    	                printf("%d
    ", e); 
    	            }  
    	            else 
    	            {  
    	                puts("get fail");
    	            }
    	        }  
    	        else if(strcmp(strInst, "insert") == 0)  
    	        {  
    	            scanf("%d%d", &a, &e);  
    	            if(ListInsert(L, a, e) == OK)  
    	            {  
    	                puts("insert OK");
    	            }
    	            else  
    	            {
    	                puts("insert fail"); 
    	            }  
    	        }
    	        else if(strcmp(strInst, "delete") == 0)
    	        {  
    	            scanf("%d",&a);
    	            if(ListDelete(L, a, &e) == OK) 
    	            {  
    	                puts("delete OK");  
    	            }  
    	            else  
    	            {  
    	                puts("delete fail");
    	            }  
    	        }  
    	        else if(strcmp(strInst, "show") == 0) 
    	        {  
    	            if(ShowList(L) == 0)
    	            {  
    	                puts("Link list is empty");
    	            }  
    	        }  
    	    }  
    	  
    	    return 0;  
    	}
    

    算法2-13~2-16:静态链表

    google+alter

    Sample Input
    show
    insert 1 ZHAO
    show
    insert 2 QIAN
    show
    insert 3 SUN
    show
    insert 4 LI
    insert 5 ZHOU
    insert 6 WU
    insert 7 ZHENG
    insert 8 WANG
    show
    insert 1 ZHANG
    show
    search LI

    	#include <stdio.h>
    	#include <string.h>
    	#define MAXSIZE 11
    	typedef char ElemType[8];
    	typedef struct
    	{
    	    ElemType data;
    	    int cur;
    	} NodeType;
    	NodeType space[MAXSIZE];
    	typedef struct
    	{
    	    int elem;
    	    int length;
    	    int listSize;
    	} SLinkList;
    	int LocateElem_SL(SLinkList& S, ElemType e)
    	{
    	    int i;
    	    i = S.elem;
    	    while (i && strcmp(space[i].data, e))
    	        i = space[i].cur;
    	    return i;
    	}
    	void InitSpace_SL()
    	{
    	    memset(space, 0 ,sizeof(space));
    	    for (int i = 0; i < MAXSIZE - 1; ++i)
    	        space[i].cur = i + 1;
    	    space[MAXSIZE - 1].cur = 0;
    	}
    	int Malloc_SL()
    	{
    	    int i = space[0].cur;
    	    if (i)
    	        space[0].cur = space[i].cur;
    	    return i;
    	}
    	void Free_SL(int k)
    	{
    	    space[k].cur = space[0].cur;
    	    space[0].cur = k;
    	}
    	void Insert_SL(SLinkList& S, int i, ElemType e)
    	{
    	    int cur = S.elem;
    	    int j=0;
    	    int newNodeIndex;
    	    while(j<i-1)
    	    {
    	        cur = space[cur].cur;
    	        ++j;
    	    }
    	    newNodeIndex = Malloc_SL();
    	    strcpy(space[newNodeIndex].data,e);
    	    space[newNodeIndex].cur = 0;
    	    space[newNodeIndex].cur = space[cur].cur;
    	    space[cur].cur = newNodeIndex;
    	    S.length++;
    	}
    	void Delete_SL(SLinkList& S, int i)
    	{
    	    int cur = S.elem;
    	    int j=0;
    	    int delCur;
    	    while(j<i-1)
    	    {
    	        cur = space[cur].cur;
    	        ++j;
    	    }
    	    delCur = space[cur].cur;
    	    space[cur].cur = space[delCur].cur;
    	    Free_SL(delCur);
    	    S.length--;
    	}
    	void CreateList_SL(SLinkList& S)
    	{
    	    S.elem = Malloc_SL();
    	    space[S.elem].cur = 0;
    	    S.length = 0;
    	    S.listSize = 9;
    	}
    	void Show_space()
    	{
    	    int i;
    	    for(i=0; i<MAXSIZE; i++)
    	    {
    	        printf("%-8s%2d
    ", space[i].data, space[i].cur);
    	    }
    	}
    	int main()
    	{
    	    SLinkList S;
    	    char str[10];
    	    int a;
    	    ElemType e;
    	    InitSpace_SL();
    	    CreateList_SL(S); 
    	    while(scanf("%s", str) != EOF)
    	    {
    	        if(strcmp(str, "insert") == 0)
    	        {
    	            scanf("%d%s", &a, e);
    	            Insert_SL(S, a, e);
    	        }
    	        else if(strcmp(str, "delete") == 0)
    	        {
    	            scanf("%d", &a);
    	            Delete_SL(S, a);
    	        }
    	        else if(strcmp(str, "search") == 0)
    	        {
    	            scanf("%s", e);
    	            printf("%2d
    ********************
    ", LocateElem_SL(S, e));
    	        }
    	        else if(strcmp(str, "show") == 0)
    	        {
    	            Show_space();
    	            puts("********************");
    	        }
    	    }
    	    return 0;
    	}
    

    算法2-18~2-19:双向循环链表

    oj

    google+alter

    	#include<stdio.h>
    	#include<stdlib.h>
    	typedef struct DLNode
    	{
    	    int data;
    	    struct DLNode *next;
    	    struct DLNode *prior;
    	} DNLode;
    	void createDLNode(DLNode *&L)
    	{
    	    L = (DLNode *)malloc(sizeof(DLNode));
    	    L->prior = L;
    	    L->next = L;
    	}
    	void printDLNode(DLNode *L)
    	{
    	    DLNode *q;
    	    q=L->next;
    	    int i=0;
    	    while(q!=L)
    	    {
    	        if(i++)//good idea!
    	        {
    	            putchar(' ');
    	        }
    	        printf("%d",q->data);
    	        q=q->next;
    	    }
    	    printf("
    ");
    	}
    	void insertDLNode(DLNode *&L,int i,int e)
    	{
    	    DLNode *q,*qlen;
    	    q=L;
    	    qlen=L->next;
    	    int num=0;
    	    while(qlen!=L)
    	    {
    	        num++;
    	        qlen=qlen->next;
    	    }
    	    int j=1;
    	    while(j<i)
    	    {
    	        j++;
    	        q=q->next;
    	    }
    	    if(i>num+1||i<1)
    	       return ;
    	    DLNode *s;
    	    s=(DLNode *)malloc (sizeof(DLNode));
    	    s->data = e;
    
    	    s->next = q->next;
    	    s->prior = q;
    	    q->next = s;
    	    q->next->prior = s;
    	    return ;
    	}
    	void deleteDLNode (DLNode *&L,int i)
    	{
    	    DLNode *q,*qlen;
    	    qlen=L->next;
    	    q=L;
    	    int num=0;
    	    while(qlen!=L)
    	    {
    	        qlen=qlen->next;
    	        num++;
    	    }
    	    if(i<1||i>num)
    	    {
    	        return ;
    	    }
    	    int j=0;
    	    while(j<i-1)
    	    {
    	        q=q->next;
    	        j++;
    	    }
    	    DLNode *qfree;
    	    qfree= q->next;
    	    q->next=qfree->next;
    	    qfree->next->prior=q;
    	    free(qfree);
    
    	}
    	int main (void)
    	{
    	    int n;
    	    DNLode *L;
    	    createDLNode(L);
    	    while(~scanf("%d",&n))
    	    {
    	        switch(n)
    	        {
    	        case 0:
    	        {
    	            printDLNode(L);
    	            break;
    	        }
    	        case 1:
    	        {
    	            int i,e;
    	            scanf("%d%d",&i,&e);
    	            insertDLNode(L,i,e);
    	           // printDLNode(L);
    	            break;
    	        }
    	        case 2:
    	        {
    	            int i;
    	            scanf("%d",&i);
    	            deleteDLNode(L,i);
    	           // printDLNode(L);
    	            break;
    	        }
    	        default:
    	            break;
    	        }
    
    	    }
    	    return 0;
    	}
    

    算法2-23:一元多项式加法

    oj

    来自洛洛师傅,没有用他给出的函数233333333333333333

    	#include<iostream>
    	#include<stdlib.h>
    	#include<stdio.h>
    	#include<cstring>
    	#include<string.h>
    	using namespace std;
    	void hs(char*str,int *ss,int *sss)
    	{
    	        char *p=NULL;
    	        int zan;
    	        zan=atoi(strtok(str," "));
    	        for(int q=0;(p =strtok(NULL," "));q++)
    	        {
    	            if(q%2==0)
    	            {
    	                if(atoi(p)>=0)
    	                   ss[atoi(p)]=zan;
    	                else
    	                    sss[-1*atoi(p)]=zan;
    	            }
    	            else
    	            {
    	                zan=atoi(p);
    	            }
    	        }
    	        return;
    	}
    	 
    	void hss(char*str,int *ss,int *sss)
    	{       char *p1=NULL;
    	        int zan1;
    	        zan1=atoi(strtok(str," "));
    	        //cout<<zan1<<endl;
    	        for(int q=0;(p1 =strtok(NULL," "));q++)
    	        {
    	            if(q%2==0)
    	            {
    	                if(atoi(p1)>=0)
    	                   ss[atoi(p1)]+=zan1;
    	                else
    	                    sss[-1*atoi(p1)]+=zan1;
    	                //if(ss[atoi(p1)]>0)
    	                //    ss[atoi(p1)]+=zan1;
    	                //else
    	                //  ss[atoi(p1)]=zan1;
    	                //cout<<ss[atoi(p1)]<<endl;
    	            }
    	            else
    	            {
    	                zan1=atoi(p1);
    	                //cout<<zan1<<endl;
    	            }
    	        }
    	        return;
    	}
    	 
    	int main()
    	{
    	     
    	    char strA[500],strB[500];
    	    while(gets(strA) && strlen(strA))
    	    {
    	        int ss[300]={0},sss[300]={0};
    	        hs(strA,ss,sss);
    	        if(gets(strB)&& strlen(strB))
    	            hss(strB,ss,sss);
    	 
    	        int gg;
    	        for(int j=0;j<150;j++)
    	        {
    	            if(ss[j]!=0)
    	                gg=j;
    	        }
    	        //gg--;
    	        for(;gg>=0;gg--)
    	          if(ss[gg]!=0)
    	              cout<<ss[gg]<<' '<<gg<<' ';
    	        for(int y=0;y<300;y++)
    	            if(sss[y]!=0)
    	                cout<<sss[y]<<' '<<-1*y<<' ';
    	        cout<<endl;
    	    }
    	    return 0;
    	}
    

    算法3-1:八进制数

    oj

    这道题目虽然放在了最后,但是并不难

    	#include<iostream>   
    	#include<stack>   
    	using namespace std;  
    	#define MAXSIZE 1000    
    	char str[MAXSIZE];  
    	void Conversion(int num,int b){  
    	    stack<int>S;
    	    do{
    	        S.push(num%b);  
    	        num/= b;  
    	    }while(num);
    	    while(!S.empty()){  
    	        cout<<S.top();  
    	        S.pop();  
    	    }
    	   cout<<endl;  
    	}
    	int main()  
    	{
    	    int a,b;  
    	    while(cin>>a){  
    	        b = 8; 
    	        Conversion(a,b);  
    	    }
    	    return 0;  
    	}
    
  • 相关阅读:
    Java自学-I/O File类
    Java自学-异常处理 自定义异常
    Java自学-异常处理 Throwable
    Java自学-异常处理 异常分类
    Java自学-异常处理 处理
    Java自学-异常处理 Exception
    Java自学-日期 Calendar
    Java自学-日期 日期格式化
    Java自学-日期 Date
    Java自学-数字与字符串 MyStringBuffer
  • 原文地址:https://www.cnblogs.com/bay1/p/10982527.html
Copyright © 2011-2022 走看看