CCF-CSP 202203-1未初始化警告 满分题解

CCF-CSP 202203-1未初始化警告 满分题解

题目链接:202203-1未初始化警告
CCF-CSP 202203-1未初始化警告 满分题解_第1张图片

思路:

  • 全部测试数据满足<10 5,则设置数据范围为const int N = 1e5+10;
  • 设置一个数组st,标记下标的使用情况,即bool st[N];
  • 注意:常数均为a0,所以初始化时将st[0]设置为true
  • 后面一次读入数据,如果右值没有被赋值过,则+1;
  • 由于无需考虑第 j 条赋值语句本身是否也有右值未初始化的问题,所以每次都将st[x]设置为true

具体代码如下:

#include 
#include 
using namespace std;
const int N = 1e5+10;
int n,k;
bool st[N];//st[k]记录第k个下标是否使用过
int main()
{
    cin>>n>>k;
    st[0]=true;//下标为0的标记为常量
    int sum=0;//记录个数,用于输出
    for(int i=1;i<=k;i++)
    {
        int x,y;
        cin>>x>>y;
        if(!st[y])//如果右值没有被赋值过,个数加1
        {
            sum++;
        }
        st[x]=true;//将左值标记为赋值过
    }
    cout<<sum<<endl;
    return 0;
}

你可能感兴趣的:(CCF-CSP,ccf,c++)