uva196
来源:互联网 发布:托派 萝莉控 知乎 编辑:程序博客网 时间:2024/06/07 07:03
还好数据范围不是很大,开始时用了a[1000]][20000][1000]一直RE
#include<stdio.h> #include<string.h>#include<ctype.h>#include<stdlib.h>#include<math.h>int list[1000][1000],vis[1000][1000];char a[1000][1000][1000];int tonum(char *s)//转换成int类型{int i,num;num=s[0]-'0';for(i=1;i<strlen(s);i++)num=num*10+s[i]-'0';return num;}void getwhere(char *s,int *u,int *v)//获得行列坐标{int i,num;num=s[0]-'A'+1;for(i=1;i<strlen(s);i++){if(isalpha(s[i]))num=num*26+s[i]-'A'+1;else break;}*u=num;*v=tonum(strchr(s,s[i]));}int dfs(char *p)//计算一个格子的表达式的值{int k,sum,num,u,v;char s[20];sum=num=0;for(k=1;k<=strlen(p);k++){if(p[k]!='+'&&p[k]!='\0') {s[num++]=p[k];continue;}s[num]='\0';getwhere(s,&u,&v);if(vis[v-1][u-1]) {vis[v-1][u-1]=0;list[v-1][u-1]=dfs(a[v-1][u-1]);}sum+=list[v-1][u-1];num=0;}return sum;}main(){int i,j,k,T,r,c,num;//freopen("D:\\o.txt","r",stdin);scanf("%d",&T);while(T--){num=0;memset(vis,0,sizeof(vis));memset(list,0,sizeof(list));scanf("%d%d",&c,&r);getchar();for(i=0;i<r;i++){for(j=0;j<c;j++){scanf("%s",a[i][j]);if(a[i][j][0]=='=')//表达式vis[i][j]=1;elselist[i][j]=tonum(a[i][j]);}}for(i=0;i<r;i++){for(j=0;j<c;j++){if(vis[i][j]){vis[i][j]=0;list[i][j]=dfs(a[i][j]);}printf("%d",list[i][j]);if(j!=c-1) printf(" ");}printf("\n");}}return 0;}
- uva196
- uva196
- uva196
- uva196 Spreadsheet
- uva196 - Spreadsheet(电子表格)
- UVA196拓扑排序形式的搜索
- 第79天的交易(2013-8-15)(-50)(-166.64)(数据单总盈利:1.35)
- linux下的管理内存相关的函数
- 生成树协议
- 个人问题总结
- HDU-4639-Hehe
- uva196
- 关于IOS动画
- VC++中使用MFC通过ADO连接数据库
- Lecture Halls
- dispatcher,redirect,chain,redirectAction4种result的不同用法
- 开博心语
- 黑马程序员_10 UDP
- 汇编书籍
- win7笔记本不能全屏玩游戏的解决方法