栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1189 Numbers That Count

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1189 Numbers That Count

#include<iostream>#include<map>#include<string>#include<cstring>#include<stdio.h>using namespace std;enum {    SIZ = 100,};char buf[2][SIZ];char *pre, *cur;map<string,int> tab;void compute(){    static int d[10]={0};    static char mybuf[20];    int i,t;    memset(d,0,sizeof(d));    cur[0] = 0;    for(i=0;pre[i];i++){        t = pre[i] - '0';        d[t] ++;    }    for(i=0;i<10;i++){        if(d[i]==0) continue;        sprintf(mybuf,"%d%d",d[i],i);        strcat(cur,mybuf);    }}void fun(){    cout<<pre;    compute();    if(strcmp(pre,cur)==0){        cout<<" is self-inventorying"<<endl;        return;    }    int step = 0;    int t;    tab.clear();    while(step++ < 16){        string s(pre);        if(tab.find(s) != tab.end()){ t = tab[s]; step -= t; cout<<" enters an inventory loop of length "<<step<<endl; return;        } else { tab[s] = step;        }        char *k=pre; pre=cur; cur=k;        compute();        if(strcmp(pre,cur)==0){ cout<<" is self-inventorying after "<<step<<" steps"<<endl; return;        }    }    cout<<" can not be classified after 15 iterations"<<endl;}int main(){    int blocknum;    cin>>blocknum;    while(blocknum--){        pre = buf[0]; cur = buf[1];        cin>>pre;        while(pre[0] != '-'){ fun(); pre = buf[0]; cur = buf[1]; cin>>pre;        }        if(blocknum){ cout<<endl;        }    }return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371908.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号