首页 > 代码库 > poj 1312
poj 1312
Numerically Speaking
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 1033 | Accepted: 606 |
Description
A developer of crossword puzzles (and other similar word games) has decided to develop a mapping between every possible word with from one to twenty characters and unique integers. The mapping is very simple, with the ordering being done first by the length of the word, and then alphabetically. Part of the list is shown below.
Your job in this problem is to develop a program which can translate, bidirectionally, between the unique word numbers and the corresponding words.
a 1
b 2
...
z 26
aa 27
ab 28
...
snowfall 157,118,051,752
...
Your job in this problem is to develop a program which can translate, bidirectionally, between the unique word numbers and the corresponding words.
Input
Input to the program is a list of words and numbers, one per line starting in column one, followed by a line containing a single asterisk in column one. A number will consist only of decimal digits (0 through 9) followed immediately by the end of line (that is, there will be no commas in input numbers). A word will consist of between one and twenty lowercase alphabetic characters (a through z).
Output
The output is to contain a single line for each word or number in the input data. This line is to contain the word starting in column one, followed by an appropriate number of blanks, and the corresponding word number starting in column 23. Word numbers that have more than three digits must be separated by commas at thousands, millions, and so forth.
Sample Input
29697684282993transcendental28011622636823854456520computationallyzzzzzzzzzzzzzzzzzzzz*
Sample Output
elementary 29,697,684,282,993transcendental 51,346,529,199,396,181,750prestidigitation 28,011,622,636,823,854,456,520computationally 232,049,592,627,851,629,097zzzzzzzzzzzzzzzzzzzz 20,725,274,851,017,785,518,433,805,270
Source
North Central North America 1997
#include<iostream>#include<cstring>#include<algorithm>using namespace std;char chess[10][10];int col[10];int n,m,ans;void dfs(int row,int num){ int i,j; if(num==m) { ans++; return; } for(i=row+1;i<=n;i++) for(j=1;j<=n;j++) if(chess[i][j]!=‘.‘ && !col[j]) { col[j]=1; dfs(i,num+1); col[j]=0; } }int main(){ int i; while(cin>>n>>m) { ans=0; if(n==-1 && m==-1)break; memset(col,0,sizeof(col)); for(i=1;i<=n;i++) cin>>chess[i]+1; dfs(0,0); cout<<ans<<endl; } return 0;}
poj 1312
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。